Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cột không hợp lệ trong danh sách chọn vì nó không được chứa trong hàm tổng hợp hoặc mệnh đề GROUP BY

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:

  1. 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
    
  2. 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
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chênh lệch thời gian SQL giữa hai ngày dẫn đến hh:mm:ss

  2. Máy chủ SQL ROWCOUNT_BIG ()

  3. Các lựa chọn thay thế SQL Server Management Studio để duyệt / chỉnh sửa bảng và chạy các truy vấn

  4. SQL Server 2016:Cải tiến OLTP trong bộ nhớ

  5. DateTime2 so với DateTime trong SQL Server