En d'autres termes, cette erreur vous indique que le serveur SQL ne connaît pas le nom de l'utilisateur. dont B
pour choisir dans le groupe.
Soit vous souhaitez sélectionner une valeur spécifique (par exemple, la valeur de l'option MIN
, SUM
ou AVG
), auquel cas vous utiliserez la fonction d'agrégation appropriée, ou vous voulez sélectionner chaque valeur comme une nouvelle ligne (c'est-à-dire en incluant B
dans le GROUP BY
liste de champs).
Considérons 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
reviendrait :
A T1
1 2
2 3
ce qui est très bien.
Cependant, considérez la requête (illégale) suivante, qui produirait cette erreur :
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Et son jeu de données retournées 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 rendent cela clair, et ne causeront pas l'erreur :
-
Utilisation d'un agrégat
SELECT A, COUNT(B) AS T1, SUM(B) AS B
FROM T2
GROUP BY A
reviendrait :
A T1 B
1 2 92
2 3 68
-
L'ajout de la colonne au GROUP BY
liste
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A, B
reviendrait :
A T1 B
1 1 13
1 1 79
2 2 13
2 1 42