2

你好我有这个查询:

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

到目前为止,这会返回相同的结果,但我不知道这是否是正确的选择。谢谢你!

4

2 回答 2

2

GROUP BY允许您使用聚合函数,如AVG, MAX, MIN, 等SUMCOUNT同时DISTINCT仅删除重复项。

请参阅SQL SERVER – DISTINCT 和 GROUP BY 之间的区别 – Distinct vs Group By。
在您的情况下,即使您使用子查询,它也会给您相同的结果,因为您只检索SUM(b.CALVAL)

于 2012-09-05T04:59:29.813 回答
2

对于这个特定的查询,无论数据库供应商如何,它们的行为总是完全相同的(至少我想不出这个使用 mysql、sql server、postgres 或 oracle 的查询有什么问题)。

于 2012-09-05T04:51:33.807 回答