Såvida du inte inkluderar T.Client
i din GROUP BY
, kan du bara inkludera det fältet i en aggregerad funktion. I ditt fall ändrar gruppering efter det fältet logiken, så det är ute (och är relaterat till ditt försök att gruppera efter CASE-satsen). Slå i stället T.Client
i en aggregerad funktion.
På så sätt är dina grupper fortfarande desamma, och när det bara finns en rad, enligt ditt CASE-test, vet du vilket resultat den aggregerade funktionen kommer att ge.
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