有表如下:
如何获得如下结果: //内容来自安云网
解法 //本文来自安云网 使用xml转换 //内容来自安云网
代码如下: //本文来自安云网 复制代码 代码如下: CREATE TABLE body //内容来自安云网 ( //本文来自安云网 ID int, //本文来自安云网 BODY nvarchar(20) //内容来自AnYun.ORG ) //内容来自AnYun.ORG go //内容来自AnYun.ORG INSERT INTO body VALUES(1,'aaaa') //内容来自安云网 INSERT INTO body VALUES(2,'bbbb') //本文来自安云网
INSERT INTO body VALUES(1,'cccccc') //内容来自AnYun.ORG INSERT INTO body VALUES(3,'ddddd') //内容来自AnYun.ORG
go //内容来自AnYun.ORG SELECT * FROM body //内容来自AnYun.ORG SELECT distinct a.ID,stuff((SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('')),1,1,'') ASBODY //内容来自安云网 FROM //内容来自AnYun.ORG
body a //内容来自安云网 --具体思路是这样的: //内容来自安云网 SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('') //内容来自AnYun.ORG --这条语句的作用是按照a中的ID查找body表中ID=a.ID的所有记录,并把它转换成一个xml(关于将查询集转换成xml的文章,你可以去看看) //内容来自安云网 stuff((SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('')),1,1,'') //本文来自安云网 --这条语句的作用是把生成的xml前面的一个逗号去掉并转化成标量值 //内容来自安云网 --最后用一个distinct去掉重复的记录 //内容来自AnYun.ORG //本文来自安云网
|