【发布时间】:2014-08-14 22:22:39
【问题描述】:
如何对内部联接中的列求和?
例如,我已经做到了这一点,但结果不正确。
SELECT DISTINCT it.CODE, pl.UNITS
FROM ITEMDETAILS it inner join plant pl ON it.CODE = pl.CODE
WHERE it.LOCNUMBER = '3434';
这给了我正确的结果
CODE UNITS
GE-ARH 2
GE-ARV 2
GE-EC 0.5
GE-JB 0.5
GE-JT 0.5
GE-VL2 2
GE-VL4 2
然后我想将所有 UNITS 加到一个 TOTAL 中,但是当我执行下面的查询时,它给了我错误的计算?谁能告诉我我的方式的错误?
SELECT DISTINCT SUM(pl.UNITS) as TotalUnits
FROM PLANT pl inner join ITEMDETAILS it on pl.CODE = it.CODE
WHERE it.LOCNUMBER = '3434';
TotalUnits
972
答案显然应该是 9.5,我认为它是针对整列计算而不考虑 where 子句,但不知道为什么?
一如既往地感谢您的帮助。
【问题讨论】:
-
您使用的是什么 RDBMS,以防万一?
-
您的查询返回 972,因为它没有对您在原始查询中返回的不同值求和。相反,您正在提取不同的总和。下面的 Adrian 或 Dumitrescu Bogdan 解决方案将解决它。
-
干杯 JChao,杜米特雷斯库给了我正确的答案。感谢收看。
-
这是正确的答案吗?在您的问题中,您没有提供两个源表的数据,只是一个临时结果。我觉得您可以完全避免 distinct(并且可能应该) - 并且还需要知道使用了哪个 dbms
标签: sql sql-server