sql server 中合并某个字段值的实例_MsSql

  • A+
所属分类:MSSQLSERVER


有表如下:


sql server 中合并某个字段值的实例_MsSql


如何获得如下结果:


sql server 中合并某个字段值的实例_MsSql


解法


使用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去掉重复的记录



  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: