2

私は2つのテーブルを持っています。

最初のテーブルは、フィールド a.pr、a.info、および a.id を持つ「a」です。2 番目のテーブルは、フィールド b.id と b.amount を持つ「b」です。

a.id = b.id ですが、複数の b.id が 1 つの a.id と一致する場合があります。

私のSQL文は次のとおりです。

SELECT a.pr, a.info, a.id, SUM(b.amount) AS total
FROM   a 
LEFT JOIN b ON a.id=b.id
WHERE  a.pr = "549"
GROUP BY a.id

さて、これはうまくいきません。「GROUP BY 式ではありません」というエラーがスローされます。私が理解しているように、サブクエリが必要ですが、ここで達成しようとしているものと完全に一致する例は見つかりませんでした。

この場合、完全な SQL ステートメント (サブクエリを含む) はどのようになりますか?

4

2 に答える 2

1

select 句のすべてのフィールドでグループ化する必要があります。

SELECT a.pr, a.info, a.id, SUM(b.amount) AS total
FROM   a 
LEFT JOIN b ON a.id=b.id
WHERE  a.pr = "549"
GROUP BY a.pr, a.info, a.id

ORA-00979を参照してください。

于 2012-10-11T23:16:21.347 に答える
0

Ryan が指摘したように、集計関数を持たないすべての列は group by 句の一部である必要があります

This linkは良い説明を提供しますが、 なぜその列を集計関数またはGROUP BY句に含める必要があるのですか?

于 2012-10-12T05:41:49.007 に答える