首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

合龙多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数

2012-07-08 
合并多行查询数据到一行:使用自连接、FOR XML PATH()、STUFF或REPLACE函数示例表 tb 数据如下id ?value———

合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数

示例表 tb 数据如下

id ? value
—————
1??? aa
1 ?? bb
2??? aaa
2 ?? bbb
2 ?? ccc

?

第一种

SELECT id,        [val]= REPLACE( (SELECT [value] AS [data()]                FROM tb AS b                 WHERE b.id = a.id                 FOR XML PATH('')) , ' ', ',')FROM tb AS a  GROUP BY id  

?结果与第三种一样,最为理想。

?

解析:[data()] 这里据说是起到一个类似数组的作用,具体用法还要再查。

如果外围不用REPLACE函数包住,则返回的结果是 aaa bbb ccc ,每项之间有空格,所以最后用REPLACE函数将所有空格替换成逗号。

?

?


1、计算列可以不用包含在聚合函数中而直接显示,如下面语句的val。
2、for xml path('') 应该应用于语句的最后面,继而生成xml。
3、for xml path('root')中的path参数是生成的xml最顶级节点。
4、字段名或是别名将成为xml的子节点,对于没有列名(字段+'')或是没有别名的字段将直接显示。如[value] +','则是用,分隔的数据(aa,bb,)。

热点排行