在下面的sql语句中,我得到以下错误
在GROUP BY子句的分组列表中,不能在表达式中使用聚合或子查询。 GROUP BY子句的group by列表中使用聚合或子查询。
我怎样才能解决这个问题呢?
SELECT
T.Post,
COUNT(*) AS ClientCount,
Client = CASE COUNT(*) WHEN '1' THEN T.Client ELSE '[Clients]' END
MyTable T
GROUP BY
T.Post,
CASE COUNT(*) WHEN '1' THEN T.Client ELSE '[Clients]' END
除非你在
中包含
,否则你只能在一个聚合函数中包含该字段。 在你的例子中,按该字段分组改变了逻辑,所以这是不可能的(这与你试图按CASE语句分组有关)。 相反,将
包在一个聚合函数中。
GROUP BY
T.Client
T.Client
这样你的分组仍然是一样的,而且当只有一行时,根据你的CASE语句的测试,你知道聚合函数将给出什么结果。
SELECT T.Post, ClientCount = COUNT(*) AS ClientCount, Client = CASE COUNT(*) WHEN 1 THEN MAX(T.Client) ELSE '[Clients]' END MyTable T GROUP BY T.Post