表1和表2中的总数量然后减去以查看库存(访问SQL)

问题描述 投票:0回答:1

我在Access数据库中有两个表。两者的表结构相同。第一个表用于事务处理,第二个表用于事务处理。我试图获取每个项目的总Transaction In和总Transaction Out,然后显示Stock。请参见下面有关我的表结构和数据的屏幕截图。

enter image description here

我正在使用下面的查询,这给了我错误的输出。

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;

enter image description here

我的预期输出如下

enter image description here

表1数据

ID  Description Qty
RM001   Item1   3
RM001   Item1   3
RM002   Item2   2
RM003   Item3   1
RM003   Item3   1

表2数据

ID  Description Qty
RM001   Item1   1
RM001   Item1   1
RM001   Item1   1
RM002   Item2   1
sql ms-access access-vba
1个回答
0
投票

当前,您先进行汇总,然后再进行汇总,将其翻转以汇总两个表,然后再进行汇总,以避免重复计算匹配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
© www.soinside.com 2019 - 2024. All rights reserved.