如何通过两个查询计算仓库货位的汇总数据?
解决方案
问题核心是直接关联两张表会导致Table2中重复的货位容量被多次统计,因此需要先分别汇总两张表的数据,再合并结果。
实现SQL语句
WITH Table1_Summary AS ( SELECT SUM(Quantity) AS Total_Quantity, SUM(`Total Spots Used`) AS Total_Spots_Used FROM Table1 ), Table2_Summary AS ( SELECT SUM(`Max Bin Capacity`) AS Total_Max_Capacity FROM Table2 ) SELECT Total_Quantity AS Quantity, Total_Max_Capacity AS `Max Bin Capacity`, Total_Spots_Used AS `Total Spots Used` FROM Table1_Summary CROSS JOIN Table2_Summary;
逻辑说明
- Table1_Summary:汇总所有货位的总库存数量和总已用仓位,自动合并同一货位的多条记录(比如000-A-006的100+200=300,2+4=6)。
- Table2_Summary:汇总所有货位的最大总容量(25+15=40),每个货位仅统计一次。
- 交叉连接(CROSS JOIN):将两个汇总结果合并为一行,得到最终的全局汇总数据。
避免错误的关键
如果直接关联两张表(比如Table1 JOIN Table2 ON Table1.Bin Location = Table2.Bin Location``),会因为Table1中同一货位的多条记录,导致Table2对应货位的容量被重复计算(000-A-006的25会被计算2次,最终总容量变成25*2+15=65),这正是你之前出现多条记录或错误数值的原因。
内容的提问来源于stack exchange,提问作者Brian Branco
相关产品推荐
相关产品推荐

