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 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章