有表如下:
如何获得如下结果:
解法
使用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去掉重复的记录
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/234451.html
赞 (0)