加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:39:49 所属栏目:MsSql教程 来源:网络整理
导读:在下面的sql语句中,我收到以下错误 Cannot use an aggregate or a subquery in an expression used for the group by list of a GROUP BY clause. 我怎么能绕过这个? SELECT T.Post,COUNT(*) AS ClientCount,Client = CASE COUNT(*) WHEN '1' THEN T.Client
在下面的sql语句中,我收到以下错误

Cannot use an aggregate or a subquery in an expression used for the
group by list of a GROUP BY clause.

我怎么能绕过这个?

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

解决方法

除非在GROUP BY中包含T.Client,否则只能在聚合函数中包含该字段.在您的情况下,按该字段进行分组会更改逻辑,从而导出(并且与您尝试按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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读