Aza*_*h91 7 sql sql-server sql-server-2008
在下面的sql语句中,我收到以下错误
无法在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
Run Code Online (Sandbox Code Playgroud)
Mat*_*lie 11
除非您包含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
Run Code Online (Sandbox Code Playgroud)