SQL SERVER FOR XML PATH 用法

      有时候我们需要把多行数据,合并成一行显示,并用逗号或者其他方式分隔显示,这时候我们可以使用FOR XML PATH的方式,来实现需求。测试数据如下:

--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([Province] nvarchar(22),[City] nvarchar(23))
Insert #T
select N'河北',N'石家庄' union all
select N'河北',N'唐山' union all
select N'河北',N'秦皇岛' union all
select N'山西',N'太原' union all
select N'山西',N'大同'
Go
--测试数据结束

      我们想按照省份显示该省所有的市区,并且每个省份只显示一条数据,写法如下:

SELECT  [Province] ,
        STUFF(( SELECT  ',' + #T.[City]
                FROM    #T
                WHERE   [Province] = a.[Province]
              FOR
                XML PATH('')
              ), 1, 1, '') AS value
FROM    #T a
GROUP BY a.[Province] 

      结果如下:


      这样我们就通过FOR XML PATH的方式实现了我们的需求,当然FOR XML PATH还有其他很多用法,而且合并显示的方法也有其他写法,后续慢慢补充。


猜你喜欢

转载自blog.csdn.net/sinat_28984567/article/details/79675769
今日推荐