Если вы не включите T.Client
в свой GROUP BY
, вы можете включить это поле только в функцию агрегирования.В вашем случае, группировка по этому полю меняет логику, так что это не так (и связано с вашей попыткой группировки с помощью оператора CASE).Вместо этого, оберните T.Client
в агрегатную функцию.
Таким образом, ваши группы остаются прежними, и когда в соответствии с тестом вашего оператора CASE есть только одна строка, вы знаете, к какому результату идет агрегатная функциядать.
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