SQL Server 实现 mysql 的group_concat 函数

mysql 提供了 分组拼接字符串函数 group_concat 可以轻松处理 group by 后的字符拼接问题
但SQL Server 未提供有此函数 所以需要特殊处理一下

在网上搜索 sql server 可以通过for xml path('') 解决

所以自己构造了一个用例 写篇贴子做一个记录。

上代码

declare @t  table
( id int identity(1,1),
  pname varchar(20),
  sname varchar(20),
  score int
)  

insert into @t(sname,pname,score)
values('张三','语文',102),
('张三','数学',99),
('李四','语文',100),
('李四','数学',99),
('王五','语文',80),
('王五','数学',70);

想实现如果结果集

group_concat.png

核心的思想是利用 xml path 实现 如下面代码

select sname,sum(score) as total_SCore ,
           stuff((select ',' + t.pname  + ' ' + cast(score as varchar) 
                   from @t as t where a.sname = t.sname  for xml path('')),1,1,'') as detail
from @t as a
group by sname
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容