table_a
.........................................
cmp_name pro_name purchase
a x1 5
a x2 7
b p1 8
a x1 8
b p2 12
b p1 6
a x1 3
table_b
.........................................
cmp_name pro_name sale
a x1 3
a x2 1
b p1 4
a x1 3
b p2 2
b p1 4
a x1 1
result
.........................................
cmp_name pro_name Total_pur Total_sale stock
a x1 16 7 9
a x2 7 1 6
b p1 14 8 6
b p2 12 2 10我该怎么做呢?
发布于 2021-06-01 16:22:15
您需要同时对purchase和sale表执行按cmp_name和pro_name分组。这是通过cmp_name和pro_name获得总的购买和销售
之后使用purchase表LEFT JOIN到sale表。(因为你可能有购买但没有出售的物品)
select a.cmp_name,
a.pro_name,
a.purchase,
b.sale,
stock = a.purchase - isnull(b.sale, 0)
from (
select cmp_name, pro_name, purchase = sum(purchase)
from table_a
group by cmp_name, pro_name
) a
left join
(
select cmp_name, pro_name, sale = sum(sale)
from table_b
group by cmp_name, pro_name
) b on a.cmp_name = b.cmp_name
and a.pro_name = b.pro_name
order by a.cmp_name, a.pro_namehttps://stackoverflow.com/questions/67783425
复制相似问题