xml path 列转行实例
SQL Server2005提供了一个新查询语法——For XML PATH(''),这个语法有什么用呢?想象一下这样一个查询需求:有两个表,班级表A、学生表B,要查询一个班级里有哪些学生?针对这个需求,方法有很多。举例一下两种:1、Join连接;2、For XML PATH('').
为了大家方便体验效果,附上创建数据库的代码:
--班级表 create table T_Class ( CNo int primary key not null identity,--班级编号 CName nvarchar(50) not null --班级名称 ) go --学生表 create table T_Student ( SNo int primary key not null identity,--学生编号 Name nvarchar(50) not null , --学生姓名 CNo int not null --所属班级 ) go
查询语句的写法:
SELECT CNo, CName, (SELECT Name+',' FROM dbo.T_Student s WHERE s.CNo=c.CNo For XML Path('')) AS Student --单独一列 ,所有学生在同一列中 FROM T_Class c
运行效果:
应用实例
SELECT produceOrderCode, STUFF((SELECT ',' + processName FROM dbo.ws_CraftRouteDetail LEFT JOIN dbo.Process ON dbo.ws_CraftRouteDetail.processCode = dbo.Process.processCode WHERE dbo.ws_ProduceOrder.produceOrderCode=dbo.ws_CraftRouteDetail.produceOrderCode FOR XML PATH('')),1,1,'') AS processNameRemark FROM dbo.ws_ProduceOrder