Erreur SQL lors de l'utilisation de Group By: Chaque GROUPE PAR l'expression doit contenir au moins une colonne qui n'est pas une référence externe
J'ai cette erreur lorsque vous faites ce que je pense être le plus simple possible les requêtes! Je vois d'autres personnes ont eu des problèmes ici aussi, et j'ai regardé à travers chaque solution que j'ai vu, mais ils sont plus impliqués requêtes de sorte qu'il était très difficile pour moi de choisir le problème. J'ai fait un peu factice de table pour illustrer mon problème.
nom de la table: grouptest
id name
1 Mel
2 Lucy
3 Mandy
4 Mel
5 Mandy
6 Mel
Je veux savoir combien de fois chaque nom de la montre, pour produire une table:
3 Mel
2 Mandy
1 Lucy
Voici la requête que je pense devrait fonctionner:
SELECT Count(id), Name
FROM groupbytest
GROUP BY 'Name'
Et j'obtiens l'erreur:
Chaque GROUPE PAR l'expression doit contenir au moins une colonne qui n'est pas
une référence externe.
Aider!
OriginalL'auteur Mel | 2012-07-31
Vous devez vous connecter pour publier un commentaire.
Vous avez des guillemets autour du Nom de domaine qui ne sont pas nécessaires.
En fonction de vos commentaires, vous avez besoin de
CAST
votreName
colonne:le problème était que vous étiez en essayant de regrouper les données par un type de données qui n'est pas autorisé. Il n'y avait soit un text, ntext ou image de champ dans votre table. Vous devez utiliser un type de données qui peuvent être regroupées. J'ai utilisé le
varchar(max)
convertir vos données à un type qui est autorisé. Vous pourriez avoir la convertir en unenvarchar(max)
.OriginalL'auteur Taryn
Perdre la
'
sur leGROUP BY
:Si
name
est untext
, alors vous avez besoin de le jeter auxVARCHAR
, mais vous pourriez être de tronquer votre colonne.Dans ce cas, le message est clair. Vous ne pouvez pas le groupe par une colonne de ce type de données. Vous pouvez essayer de casting pour
VARCHAR
première+1 me battre en quelques secondes...encore une fois
vous aussi battu sur moi aujourd'hui
OriginalL'auteur Lamak
Vous voulez:
GROUP BY 'Name'
essaie de groupe sur la chaîne littérale "Nom", pas la colonneName
.Name
peut aussi être un mot réservé, d'où les parenthèses autour d'elle, même si vous êtes mieux de ne pas l'appel de la colonneName
.Ensuite, vous devez lancer le
Name
colonne de type varchar.OriginalL'auteur LittleBobbyTables