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 A
würde zurückgeben:
A T1 B 1 2 92 2 3 68
-
Hinzufügen der Spalte zu
GROUP BY
ListeSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
würde zurückgeben:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42