Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tidak dapat menggunakan agregat atau subkueri dalam ekspresi yang digunakan untuk grup menurut daftar klausa GROUP BY

Kecuali Anda menyertakan T.Client di GROUP BY , Anda hanya dapat menyertakan bidang tersebut dalam fungsi agregat. Dalam kasus Anda, pengelompokan berdasarkan bidang itu mengubah logika, jadi itu keluar (dan terkait dengan upaya Anda untuk mengelompokkan berdasarkan pernyataan CASE). Sebagai gantinya, bungkus T.Client dalam fungsi agregat.

Dengan cara ini grup Anda masih sama, dan ketika hanya ada satu baris, sesuai dengan pengujian pernyataan CASE Anda, Anda tahu hasil apa yang akan diberikan oleh fungsi agregat.

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. Bagaimana RANK() Bekerja di SQL Server

  2. Susun susunan variabel nvarchar di t-sql

  3. Instal Ekstensi Agen Server SQL di Azure Data Studio

  4. Cara membagi nilai yang dipisahkan koma ke kolom

  5. Gabungkan beberapa baris