--创建表和测试数据
create table dbo.SumStr(groupid varchar(10),string varchar(10));
insert into dbo.SumStr(groupid,string) values('a','stra1');
insert into dbo.SumStr(groupid,string) values('a','stra2');
insert into dbo.SumStr(groupid,string) values('b','strb1');
insert into dbo.SumStr(groupid,string) values('b','strb2');
insert into dbo.SumStr(groupid,string) values('b','strb3');
insert into dbo.SumStr(groupid,string) values('b','strb4');
insert into dbo.SumStr(groupid,string) values('c','strc1');
insert into dbo.SumStr(groupid,string) values('c','strc2');
insert into dbo.SumStr(groupid,string) values('c','strc3');
--xml聚合
select
a.groupid,
(select ','+ string from dbo.SumStr b where b.groupid = a.groupid for xml path('')) as string
from dbo.SumStr a
group by a.groupid
--结果
/*
groupid string
a ,stra1,stra2
b ,strb1,strb2,strb3,strb4
c ,strc1,strc2,strc3
*/
--去掉最前面的逗号
select c.groupid,stuff(c.string,1,1,'') as string
from
(
select
a.groupid,
(select ','+ string from dbo.SumStr b where b.groupid = a.groupid for xml path('')) as string
from dbo.SumStr a
group by a.groupid
) c
--结果
/*
groupid string
a stra1,stra2
b strb1,strb2,strb3,strb4
c strc1,strc2,strc3
*/