我有2张桌子; 入站和出站。它们都具有相同的结构。
我尝试了这个选择语句和结果,如下图所示:
SELECT [StoreItemId], SUM([Quantity]) AS 'inbound' FROM [Inbound] GROUP BY [StoreItemId];
SELECT [StoreItemId], SUM([Quantity]) AS 'outbound' FROM [Outbound] GROUP BY [StoreItemId];
我尝试查询:
SELECT
(SELECT SUM([Quantity]) AS 'inbound' FROM [Inbound] WHERE [Inbound].[StoreItemId] = 1) -
(SELECT SUM([Quantity]) AS 'Outbound' FROM [Outbound] WHERE [Outbound].[StoreItemId] = 1)
结果为105(115-10; StoreItemId的入库数量= 1-StoreItemId的入库数量= 1)
我尝试将上述两个查询组合成这样的查询:
SELECT [StoreItemId] AS 'xyz'
(SELECT SUM([Quantity]) FROM [Inbound] WHERE [Inbound].[StoreItemId] = [xyz]) -
(SELECT SUM([Quantity]) FROM [Outbound] WHERE [Outbound].[StoreItemId] = [xyz])
FROM [StoreItem]
但这是错误的
结果应为:
StoreItemId | Balance
----------------------
1 | 105
2 | 126
3 | 78
4 | 144
5 | 100
6 | 179
答案 0 :(得分:0)
您可以将LEFT JOIN
和GROUP BY
中的SUM
和QUANTITY
一起使用。
您可以参考下面的查询。
select StoreItemId , (sum(ISNULL(inb.Quantity,0)) - sum(ISNULL(ob.Qunatity,0))) as Balance
from Inbound inb
LEFT JOIN Outbound ob on ob.StoreItemId = si.StoreItemId
GROUP BY StoreItemId