天天看点

SQL SERVER用STUFF和FOR XML PATH合并行

原始数据如下

SQL SERVER用STUFF和FOR XML PATH合并行

首先通过FOR XML PATH获取XML 元素字符串

以XML格式输出查找结果

SELECT ',' + new_name
      FROM new_test1Base
      FOR XML PATH ('')
           

输出:,123,123,445,445,asdf

SELECT ',' + new_name as m2
      FROM new_test1Base
      FOR XML PATH ('n1')
           

可以对XML元素增加命名标签

输出:,123,123,445,445,asdf

其次通过STUFF去掉开头的逗号

SELECT texts = STUFF((
      SELECT ',' + new_name
      FROM new_test1Base
      FOR XML PATH ('')
	  ), 1, 1, '')
FROM new_test1Base
           

输出如下:

SQL SERVER用STUFF和FOR XML PATH合并行

STUFF函数

字符串替代函数,4个参数

(字符串,开始位置->第一个元素为1,替代几个,替代物)

最后连接key分组

SELECT new_name, texts = STUFF((
      SELECT ',' + new_name
      FROM new_test1Base t1
	  WHERE t1.new_name=t2.new_name
      FOR XML PATH ('')
	  ), 1, 1, '')
FROM new_test1Base t2
GROUP BY t2.new_name
           
SQL SERVER用STUFF和FOR XML PATH合并行
sql