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

前端之家收集整理的这篇文章主要介绍了使用Group By子句的SQL逗号分隔行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下查询
  1. SELECT
  2. Account,Unit,SUM(state_fee),Code
  3. FROM tblMta
  4. WHERE MTA.Id = '123'
  5. GROUP BY Account,Unit

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

解决方法

您要使用FOR XML PATH构造:
  1. SELECT ACCOUNT,unit,Stuff((SELECT ',' + code
  2. FROM tblmta t2
  3. WHERE t2.ACCOUNT = t1.ACCOUNT
  4. AND t2.unit = t1.unit
  5. AND t2.id = '123'
  6. FOR XML PATH('')),1,2,'') [Codes]
  7. FROM tblmta t1
  8. WHERE t1.id = '123'
  9. 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

猜你在找的MsSQL相关文章