Đặ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 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 xem xét như sau (bất hợp pháp) truy vấn, mà sẽ tạo ra lỗi này:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Và dữ liệu trả về của nó thiết lập minh họa 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, sau hai truy vấn làm rõ điều này và sẽ không gây ra lỗi:
Sử dụng một tổng
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 danh sách GROUP BY
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
Nguồn
2013-08-15 18:00:41
có thể trùng lặp với [Điều khoản theo nhóm gây ra lỗi] (http://stackoverflow.com/questions/16314836/group-by-clause-causing-error). Nếu bạn tìm kiếm ở đây trên thông báo lỗi của bạn, bạn sẽ tìm thấy rất nhiều trận đấu ở đây mà có thể đã trả lời điều này cho bạn. Xin vui lòng ít nhất là đặt nỗ lực vào đó, cũng như trong thực tế * đọc * thông báo lỗi, không chỉ mô tả vấn đề chính xác mà còn cho bạn biết chính xác cột nào đang gây ra nó. –
Bản sao có thể có của [Lý do cho cột không hợp lệ trong danh sách lựa chọn vì nó không được chứa trong hàm tổng hợp hoặc mệnh đề GROUP BY] (http://stackoverflow.com/questions/13999817/reason-for-column-is -invalid-in-the-select-list-vì-nó-là-không-chứa-in-e) – blo0p3r