С други думи, тази грешка ви казва, че SQL Server не знае кое B
за да изберете от групата.
Или искате да изберете една конкретна стойност (например MIN
, SUM
или AVG
), в който случай ще използвате подходящата обобщена функция или искате да изберете всяка стойност като нов ред (т.е. включително B
в GROUP BY
списък с полета).
Помислете за следните данни:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
Заявката
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
ще върне:
A T1 1 2 2 3
което всичко е наред.
Помислете обаче за следната (незаконна) заявка, която би довела до тази грешка:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
И върнатият му набор от данни, илюстриращ проблема:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
Следните две заявки обаче изясняват това и няма да причинят грешката:
-
Използване на агрегат
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
ще върне:
A T1 B 1 2 92 2 3 68
-
Добавяне на колоната към
GROUP BY
списъкSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
ще върне:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42