有表如下:
如何获得如下结果:
解法
使用xml转换
代码如下:
复制代码 代码如下:
create table body
(
id int,
body nvarchar(20)
)
go
insert into body values(1,’aaaa’)
insert into body values(2,’bbbb’)
insert into body values(1,’cccccc’)
insert into body values(3,’ddddd’)
go
select * from body
select distinct a.id,stuff((select ‘,’+body from body where id=a.id for xml path(”)),1,1,”) asbody
from
body a
–具体思路是这样的:
select ‘,’+body from body where id=a.id for xml path(”)
–这条语句的作用是按照a中的id查找body表中id=a.id的所有记录,并把它转换成一个xml(关于将查询集转换成xml的文章,你可以去看看)
stuff((select ‘,’+body from body where id=a.id for xml path(”)),1,1,”)
–这条语句的作用是把生成的xml前面的一个逗号去掉并转化成标量值
–最后用一个distinct去掉重复的记录