Mit anderen Worten, dieser Fehler weist darauf hin, dass SQL Server nicht weiß, welche B
aus der Gruppe ausgewählt werden soll.
Entweder Sie wollen einen bestimmten Wert wählen (zB MIN
, SUM
oder AVG
) , in dem Fall , dass Sie die entsprechende Aggregatfunktion verwenden, oder Sie wollen jeden Wert als neue Zeile wählen (dh einschließlich B
in der GROUP BY
Feldliste).
Betrachten Sie die folgenden Daten:
ID AB
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ückkehren:
UM 1
1 2
2 3
Das ist alles schön und gut.
Beachten Sie jedoch die folgende (unzulässige) Abfrage, die diesen Fehler verursachen würde:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Und der zurückgegebene Datensatz veranschaulicht das Problem:
A T1 B.
1 2 13? 79? Sowohl 13 als auch 79 als separate Zeilen? (13 + 79 = 92)? ...?
2 3 13? 42? ...?
Die folgenden zwei Abfragen machen dies jedoch deutlich und verursachen den Fehler nicht:
Verwenden eines Aggregats
SELECT A, COUNT(B) AS T1, SUM(B) AS B
FROM T2
GROUP BY A
würde zurückkehren:
A T1 B.
1 2 92
2 3 68
Hinzufügen der Spalte zur GROUP BY
Liste
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A, B
würde zurückkehren:
A T1 B.
1 1 13
1 1 79
2 2 13
2 1 42