除非您将包括在内
T.Client,否则您
GROUPBY只能在聚合函数中包括该字段。在您的情况下,按该字段分组会改变逻辑,因此就没有了(并且与您按CASE语句进行分组的尝试有关)。而是包装
T.Client一个聚合函数。
这样,您的组仍然是相同的,并且根据CASE语句的测试,当只有一行时,您知道聚合函数将给出什么结果。
SELECt T.Post, ClientCount = COUNT(*) AS ClientCount, Client = CASE COUNT(*) WHEN 1 THEN MAX(T.Client) ELSE '[Clients]' ENDFROM MyTable TGROUP BY T.Post



