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