In altre parole, questo errore ti dice che SQL Server non sa quale B
per selezionare dal gruppo.
O vuoi selezionare un valore specifico (ad es. il MIN
, SUM
o AVG
) nel qual caso utilizzeresti la funzione di aggregazione appropriata, oppure desideri selezionare ogni valore come una nuova riga (cioè includendo B
nel GROUP BY
elenco campi).
Considera i seguenti dati:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
La domanda
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
ritornerebbe:
A T1 1 2 2 3
che va tutto bene.
Tuttavia, considera la seguente query (illegale), che produrrebbe questo errore:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
E il suo set di dati restituito che illustra il problema:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
Tuttavia, le due query seguenti lo chiariscono e non causeranno l'errore:
-
Utilizzando un aggregato
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
ritornerebbe:
A T1 B 1 2 92 2 3 68
-
Aggiunta della colonna al
GROUP BY
elencoSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
ritornerebbe:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42