つまり、このエラーは、SQLServerがどのを認識していないことを示しています。 B
グループから選択します。
特定の値を1つ選択するか(例:MIN
、SUM
、またはAVG
)この場合、適切な集計関数を使用するか、すべての値を新しい行として選択します(つまり、B
を含みます)。 GROUP BY
内 フィールドリスト)。
次のデータを検討してください:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
クエリ
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
返されます:
A T1 1 2 2 3
これはすべてうまくいっています。
ただし、次の(不正な)クエリを検討してください。これにより、このエラーが発生します。
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
そして、問題を説明する返されるデータセット:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
ただし、次の2つのクエリはこれを明確にし、エラーを引き起こしません。
-
アグリゲートの使用
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
返されます:
A T1 B 1 2 92 2 3 68
-
GROUP BY
に列を追加する リストSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
返されます:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42