我在Access
数据库中有两个表。两者的表结构相同。第一个表用于事务处理,第二个表用于事务处理。我试图获取每个项目的总Transaction In
和总Transaction Out
,然后显示Stock
。请参见下面有关我的表结构和数据的屏幕截图。
我正在使用下面的查询,这给了我错误的输出。
SELECT TABLE1.ID, Sum(TABLE1.qty) AS TR_In, Sum(TABLE2.qty) AS TR_Out, Sum(TABLE1.qty)-Sum(TABLE2.qty) AS Stock
FROM TABLE1 LEFT JOIN TABLE2 ON TABLE1.ID = TABLE2.ID
GROUP BY TABLE1.ID;
我的预期输出如下
ID Description Qty
RM001 Item1 3
RM001 Item1 3
RM002 Item2 2
RM003 Item3 1
RM003 Item3 1
ID Description Qty
RM001 Item1 1
RM001 Item1 1
RM001 Item1 1
RM002 Item2 1
当前,您先进行汇总,然后再进行汇总,将其翻转以汇总两个表,然后再进行汇总,以避免重复计算匹配ID:
SELECT agg1.id, agg1.TR_In, agg2.TR_Out,
(agg1.TR_In - agg2.TR_Out) AS Stock
FROM
(SELECT TABLE1.ID, SUM(TABLE1.qty) AS TR_In,
FROM TABLE1
GROUP BY TABLE1.ID) agg1
LEFT JOIN
(SELECT TABLE2.ID, SUM(TABLE2.qty) AS TR_Out,
FROM TABLE2
GROUP BY TABLE2.ID) agg2
ON agg1.ID = agg2.ID