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 

 

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