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

使用Group By子句的SQL逗号分隔行

发布时间:2020-12-12 16:11:16 所属栏目:MsSql教程 来源:网络整理
导读:我有以下查询: SELECT Account,Unit,SUM(state_fee),CodeFROM tblMtaWHERE MTA.Id = '123'GROUP BY Account,Unit 这当然会引发异常,因为代码不在group by子句中.每个state_fee都有一个代码.如何将此代码显示为1个记录(每个state_fee为1个代码,单位为多个stat
我有以下查询:
SELECT
  Account,Unit,SUM(state_fee),Code
FROM tblMta
WHERE MTA.Id = '123'
GROUP BY Account,Unit

这当然会引发异常,因为代码不在group by子句中.每个state_fee都有一个代码.如何将此代码显示为1个记录(每个state_fee为1个代码,单位为多个state_fee),以逗号分隔的列表?我在这里考察了不同的解决方案,但是我找不到与一个团队合作的任何方法.

解决方法

您要使用FOR XML PATH构造:
SELECT ACCOUNT,unit,Stuff((SELECT ',' + code 
              FROM   tblmta t2 
              WHERE  t2.ACCOUNT = t1.ACCOUNT 
                     AND t2.unit = t1.unit 
                     AND t2.id = '123' 
              FOR XML PATH('')),1,2,'') [Codes] 
FROM   tblmta t1 
WHERE  t1.id = '123' 
GROUP  BY ACCOUNT,unit

请参阅其他示例:

> SQL same unit between two tables needs order numbers in 1 cell
> SQL Query to get aggregated result in comma seperators along with group by column in SQL Server

(编辑:李大同)

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

    推荐文章
      热点阅读