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

この特定のクエリでは、DBベンダーに関係なく、常にまったく同じように動作します(少なくとも、mysql、sql server、postgres、またはoracleを使用したこのクエリの問題は考えられません)。

于 2012-09-05T04:51:33.807 に答える
2

GROUP BY重複を削除しながら、、、、などの集計 AVG関数を使用できます。MAXMINSUMCOUNTDISTINCT

SQL SERVER –DISTINCTとGROUPBYの違い– Distinct vsGroupByを参照してください。
あなたの場合、検索しているのは。だけなので、サブクエリを使用していても同じ結果が得られますSUM(b.CALVAL)

于 2012-09-05T04:59:29.813 に答える