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 Arenverrait :
A T1 B 1 2 92 2 3 68
-
Ajout de la colonne au
GROUP BYlisteSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, Brenverrait :
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42