不能在用于GROUP BY子句的group by列表的表达式中使用聚合或子查询

在下面的SQL语句中,我得到以下错误

不能在用于GROUP BY子句的group by列表的表达式中使用聚合或子查询。

我该如何解决?

SELECT

T.Post,

COUNT(*) AS ClientCount,

Client = CASE COUNT(*) WHEN '1' THEN T.Client ELSE '[Clients]' END

FROM

MyTable T

GROUP BY

T.Post,

CASE COUNT(*) WHEN '1' THEN T.Client ELSE '[Clients]' END

回答:

除非您将包括在内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

以上是 不能在用于GROUP BY子句的group by列表的表达式中使用聚合或子查询 的全部内容, 来源链接: utcz.com/qa/397890.html

回到顶部