Іншими словами, ця помилка говорить вам про те, що 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
І його повернутий набір даних, що ілюструє проблему:
A T1 B
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
повернеться:
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