Nói cách khác, lỗi này cho bạn biết rằng SQL Server không biết cái nào B
để chọn từ nhóm.
Hoặc bạn muốn chọn một giá trị cụ thể (ví dụ:MIN
, SUM
hoặc AVG
) trong trường hợp đó, bạn sẽ sử dụng hàm tổng hợp thích hợp hoặc bạn muốn chọn mọi giá trị làm hàng mới (tức là bao gồm B
trong GROUP BY
danh sách trường).
Hãy xem xét các dữ liệu sau:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
Truy vấn
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
sẽ trở lại:
A T1 1 2 2 3
đó là tất cả tốt và tốt.
Tuy nhiên, hãy xem xét truy vấn (bất hợp pháp) sau, truy vấn này sẽ tạo ra lỗi này:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Và tập dữ liệu trả về của nó minh họa cho vấn đề:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
Tuy nhiên, hai truy vấn sau làm rõ điều này và sẽ không gây ra lỗi:
-
Sử dụng tổng hợp
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
sẽ trở lại:
A T1 B 1 2 92 2 3 68
-
Thêm cột vào
GROUP BY
danh sáchSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
sẽ trở lại:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42