Met andere woorden, deze fout vertelt u dat SQL Server niet weet welke B
om uit de groep te kiezen.
Of u wilt één specifieke waarde selecteren (bijv. de MIN
, SUM
, of AVG
) in dat geval zou u de juiste aggregatiefunctie gebruiken, of u wilt elke waarde als een nieuwe rij selecteren (d.w.z. inclusief B
in de GROUP BY
veldlijst).
Houd rekening met de volgende gegevens:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
De vraag
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
zou terugkeren:
A T1 1 2 2 3
dat is allemaal goed en wel.
Overweeg echter de volgende (illegale) zoekopdracht, die deze fout zou opleveren:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
En de geretourneerde dataset die het probleem illustreert:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
De volgende twee vragen maken dit echter duidelijk en zullen de fout niet veroorzaken:
-
Een aggregaat gebruiken
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
zou terugkeren:
A T1 B 1 2 92 2 3 68
-
De kolom toevoegen aan de
GROUP BY
lijstSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
zou terugkeren:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42