Sauf si vous incluez T.Client
dans votre GROUP BY
, vous ne pouvez inclure ce champ que dans une fonction d'agrégation. Dans votre cas, le regroupement par ce champ modifie la logique, donc c'est sorti (et est lié à votre tentative de regroupement par l'instruction CASE). Au lieu de cela, enveloppez T.Client
dans une fonction d'agrégation.
De cette façon, vos groupes sont toujours les mêmes, et lorsqu'il n'y a qu'une seule ligne, selon le test de votre instruction CASE, vous savez quel résultat la fonction d'agrégation va donner.
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