你好我有这个问题:
SELECT DISTINCT a.id, a.runcd,
(SELECT SUM(b.CALVAL) FROM GRS b
WHERE b.PCode=11000
AND a.id = b.id
AND a.runcd=b.runcd) AS qval
FROM GRS a
WHERE a.crt = k04
这是一样的:
SELECT a.id, a.runcd,
(SELECT SUM(b.CALVAL) FROM GRS b
WHERE b.PCode=11000
AND a.id = b.id
AND a.runcd=b.runcd) AS qval
FROM GRS a
WHERE a.crt = k04
GROUP BY id,runcd
到目前为止,这会返回相同的结果,但我不知道这是否是正确的选择。谢谢!
答案 0 :(得分:2)
对于这个特定的查询,无论数据库供应商如何,它们的行为总是完全相同(至少我不能想到使用mysql,sql server,postgres或oracle查询这个查询的任何问题)。
答案 1 :(得分:2)
GROUP BY
可让您使用汇总功能,例如AVG
,MAX
,MIN
,SUM
,COUNT
等DISTINCT
只会删除重复项。
见SQL SERVER – Difference between DISTINCT and GROUP BY – Distinct vs Group By.
在您的情况下,即使您使用子查询,它也会给您相同的结果,因为您只检索SUM(b.CALVAL)
。