Med andra ord, det här felet talar om för dig att SQL Server inte vet vilken B
för att välja från gruppen.
Antingen vill du välja ett specifikt värde (t.ex. MIN
). , SUM
, eller AVG
) i vilket fall du skulle använda lämplig aggregatfunktion, eller så vill du välja varje värde som en ny rad (dvs. inklusive B
i GROUP BY
fältlista).
Tänk på följande data:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
Frågan
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
skulle returnera:
A T1 1 2 2 3
vilket är väl och bra.
Tänk dock på följande (olagliga) fråga, som skulle ge detta fel:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Och dess returnerade datamängd som illustrerar problemet:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
Följande två frågor gör dock detta tydligt och kommer inte att orsaka felet:
-
Använda ett aggregat
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
skulle returnera:
A T1 B 1 2 92 2 3 68
-
Lägger till kolumnen i
GROUP BY
listaSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
skulle returnera:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42