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

Không thể sử dụng tổng hợp hoặc truy vấn con trong một biểu thức được sử dụng cho nhóm theo danh sách của mệnh đề GROUP BY

Trừ khi bạn bao gồm T.Client trong GROUP BY của bạn , bạn chỉ có thể bao gồm trường đó trong một hàm tổng hợp. Trong trường hợp của bạn, việc nhóm theo trường đó sẽ thay đổi logic, do đó, điều đó không xảy ra (và có liên quan đến việc bạn cố gắng nhóm theo câu lệnh CASE). Thay vào đó, hãy bọc T.Client trong một hàm tổng hợp.

Bằng cách này, các nhóm của bạn vẫn giống nhau và khi chỉ có một hàng, theo kiểm tra của câu lệnh CASE, bạn biết kết quả mà funciton tổng hợp sẽ đưa ra.

SELECT
  T.Post,
  ClientCount = COUNT(*) AS ClientCount,
  Client      = CASE COUNT(*) WHEN 1 THEN MAX(T.Client) ELSE '[Clients]' END
FROM
  MyTable T
GROUP BY
  T.Post


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận giá trị trả lại từ JDBC MSSQL

  2. Máy chủ SQL bị thiếu chỉ mục

  3. Cách chỉ định đối chiếu trong truy vấn trong SQL Server (T-SQL)

  4. Lỗi nghiêm trọng:Gọi đến hàm không xác định sqlsrv_connect ()

  5. Cột đầu ra tên XML UNION FOR XML