Другими словами, эта ошибка сообщает вам, что SQL Server не знает, что B
выбрать из группы.
Либо вы хотите выбрать одно значение конкретное (например MIN
, SUM
или AVG
) , в этом случае вы должны использовать соответствующую статистическую функцию, или вы хотите , чтобы выбрать все значения в качестве новой строки (т.е. в том числе B
в GROUP BY
списке полей).
Рассмотрим следующие данные:
ID AB
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
вернется:
А Т1
1 2
2 3
что все хорошо.
Однако рассмотрим следующий (недопустимый) запрос, который приведет к этой ошибке:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
И возвращенный набор данных, иллюстрирующий проблему:
А Т1 Б
1 2 13? 79? И 13, и 79 как отдельные строки? (13 + 79 = 92)? ...?
2 3 13? 42? ...?
Однако следующие два запроса проясняют это и не вызывают ошибки:
Использование агрегата
SELECT A, COUNT(B) AS T1, SUM(B) AS B
FROM T2
GROUP BY A
вернется:
А Т1 Б
1 2 92
2 3 68
Добавление столбца в GROUP BY
список
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A, B
вернется:
А Т1 Б
1 1 13
1 1 79
2 2 13
2 1 42