En d'autres termes, cette erreur vous indique que SQL Server ne sait pas quel B
pour sélectionner dans le groupe.
Soit vous souhaitez sélectionner une valeur spécifique (par exemple le MIN
, SUM
, ou AVG
) auquel cas vous utiliseriez la fonction d'agrégation appropriée, ou vous voudriez sélectionner chaque valeur comme une nouvelle ligne (c'est-à-dire y compris B
dans le GROUP BY
liste des champs).
Considérez les données suivantes :
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
La requête
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
renverrait :
A T1 1 2 2 3
ce qui est bien beau.
Cependant, considérez la requête suivante (illégale), qui produirait cette erreur :
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Et son ensemble de données renvoyé illustrant le problème :
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
Cependant, les deux requêtes suivantes le précisent et ne provoqueront pas l'erreur :
-
Utiliser un agrégat
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
renverrait :
A T1 B 1 2 92 2 3 68
-
Ajout de la colonne au
GROUP BY
listeSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
renverrait :
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42