Mit anderen Worten, dieser Fehler sagt Ihnen, dass SQL Server nicht weiß, welcher B aus der Gruppe auszuwählen.
Entweder möchten Sie einen bestimmten Wert auswählen (z. B. den MIN , SUM , oder AVG ), in diesem Fall würden Sie die entsprechende Aggregatfunktion verwenden oder jeden Wert als neue Zeile auswählen (d. h. einschließlich B). im Feld GROUP BY Feldliste).
Betrachten Sie die folgenden Daten:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
Die Abfrage
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
würde zurückgeben:
A T1 1 2 2 3
das ist alles schön und gut.
Betrachten Sie jedoch die folgende (illegale) Abfrage, die diesen Fehler erzeugen würde:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Und der zurückgegebene Datensatz, der das Problem veranschaulicht:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
Die folgenden zwei Abfragen verdeutlichen dies jedoch und verursachen den Fehler nicht:
-
Verwendung eines Aggregats
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY Awürde zurückgeben:
A T1 B 1 2 92 2 3 68
-
Hinzufügen der Spalte zu
GROUP BYListeSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, Bwürde zurückgeben:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42