A meno che tu non includa T.Client
nel tuo GROUP BY
, puoi includere quel campo solo all'interno di una funzione di aggregazione. Nel tuo caso, il raggruppamento per quel campo cambia la logica, quindi è fuori (ed è correlato al tuo tentativo di raggruppare in base all'istruzione CASE). Invece, avvolgi T.Client
in una funzione aggregata.
In questo modo i tuoi gruppi sono sempre gli stessi e quando c'è solo una riga, come per il test della tua istruzione CASE, sai quale risultato darà la funzione aggregata.
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