put in altre parole, questo errore vi sta dicendo che SQL Server non sa cheB
per selezionare dal gruppo.
O si desidera selezionare un valore specifico (ad esempio la MIN
, SUM
o AVG
), nel qual caso si usa la funzione di aggregazione appropriato, o si desidera selezionare ogni valore come nuova riga (ossia inclusi B
nel Elenco dei campi GROUP BY
).
Considerate i seguenti dati:
ID A B
1 1 13
1 1 79
1 2 13
1 2 13
1 2 42
La query
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
sarebbero tornati:
A T1
1 2
2 3
che è cosa buona e giusta.
considerare tuttavia, la seguente query (illegale), che produrrebbe questo errore:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
E suoi dati restituiti set 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, i seguenti due le query lo rendono chiaro e non causeranno l'errore:
Utilizzando un aggregato
SELECT A, COUNT(B) AS T1, SUM(B) AS B
FROM T2
GROUP BY A
restituirebbe:
A T1 B
1 2 92
2 3 68
Aggiunta della colonna all'elenco GROUP BY
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A, B
restituirebbe:
A T1 B
1 1 13
1 1 79
2 2 13
2 1 42
fonte
2013-08-15 18:00:41
possibile duplicato della [clausola Group By che causa errore] (http://stackoverflow.com/questions/16314836/group-by-clause-causing-error). Se hai cercato qui sul tuo messaggio di errore, troverai molte partite qui che avrebbero risposto per te. Si prega almeno di mettere lo sforzo per farlo, così come in realtà * leggendo * il messaggio di errore, che non solo descrive il problema esatto ma ti dice esattamente quale colonna lo sta causando. –
Possibile duplicato di [Motivo per colonna non valido nell'elenco di selezione perché non è contenuto in una funzione di aggregazione o nella clausola GROUP BY] (http://stackoverflow.com/questions/13999817/reason-for-column-is -invalid-in-the-select-list-perché-it-is-non-contained-in-e) – blo0p3r