Đặt nói cách khác, lỗi này là nói cho bạn rằng SQL Server không biết mà B
để lựa chọn từ nhóm.
Hoặc bạn muốn chọn một giá trị cụ thể (ví dụ như MIN
, SUM
hoặc AVG
) trong trường hợp này bạn sẽ sử dụng hàm tổng hợp thích hợp, hoặc bạn muốn chọn tất cả các giá trị như một 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 AB
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 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 vấn đề:
A T1 B
1 2 13? 79? Cả 13 và 79 là hàng riêng biệt? (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ách
SELECT 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