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);
想实现如果结果集
核心的思想是利用 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