组合多个表中的数据进行求和:解决不正确的结果
在 SQL 查询中,您的目标是检索由三列组成的表:“PROJECT”、“SUM_AP”和“SUM_INV”。但是,由于聚合过程中的分组,您遇到了不正确的结果。
错误结果的原因:
查询中的“GROUP BY”子句根据值组合在“AP.[项目]”列中。此聚合过程本质上是对重复的“值”条目进行求和,从而导致结果膨胀。
解决方案:使用子选择查询
要解决此问题,我们可以修改使用子选择的查询查询:
SELECT AP1.[PROJECT], (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP, (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV FROM AP AS AP1 INNER JOIN INV AS INV1 ON (AP1.[PROJECT] =INV1.[PROJECT]) WHERE AP1.[PROJECT] = 'XXXXX' GROUP BY AP1.[PROJECT]
解释:
此修改后的查询确保仅对不同的“PROJECT”值进行分组,并且总和计算正确,提供了预期的结果。
以上是为什么合并多个表时我的 SQL 求和计算不正确?如何使用子查询修复这些问题?的详细内容。更多信息请关注PHP中文网其他相关文章!