Sagt med andre ord, denne fejl fortæller dig, at SQL Server ikke ved hvilken B
for at vælge fra gruppen.
Enten vil du vælge en bestemt værdi (f.eks. MIN
). , SUM
eller AVG
) i hvilket tilfælde du vil bruge den passende aggregerede funktion, eller du vil vælge hver værdi som en ny række (dvs. inklusive B
i GROUP BY
feltliste).
Overvej følgende data:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
Forespørgslen
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
ville returnere:
A T1 1 2 2 3
hvilket er godt og vel.
Overvej dog følgende (ulovlige) forespørgsel, som ville frembringe denne fejl:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Og dets returnerede datasæt, der illustrerer problemet:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
De følgende to forespørgsler gør dette dog klart og vil ikke forårsage fejlen:
-
Brug af et aggregat
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
ville returnere:
A T1 B 1 2 92 2 3 68
-
Tilføjelse af kolonnen til
GROUP BY
listeSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
ville returnere:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42