2010-10-22 56 views
1

Hei,CTE和分層XML結果

我有一個簡單的CTE結果與層次列表的項目(父/子關係)。如何使用「FOR XML」sql語法將其轉換爲XML,同時保留層次結構?

感謝, 埃斯

+0

訪問http://msdn.microsoft.com/en-us/library/ms345137(SQL.90).aspx並搜索「遞歸和FOR XML「 – Andomar 2010-10-22 10:09:34

回答

0

要建立你需要「堆棧」中,模仿你正在試圖建立層次結構的方式查詢hieararchy。如果您只使用一個表或CTE來構建XML,則需要嘗試在SQL調用中使「父」元素不同。見下文

例如,選擇父母時,我如何使用不同的:

use tempdb 
GO 
IF OBJECT_ID('tempdb..#ParentChild')IS NOT NULL DROP TABLE #ParentChild 
CREATE TABLE #ParentChild(
ID    int identity(1,1), 
ParentID  int, 
ParentName  varchar(25), 
ChildName  varchar(25)); 

Insert Into #ParentChild 
Values(1,'John','Mike'); 

Insert Into #ParentChild 
Values(1,'John','Russ'); 

Insert Into #ParentChild 
Values(1,'John','Stan'); 

Select 
    pc.ParentName AS '@parent', 
    (Select 
     p.ChildName as '@child' 
    From #ParentChild p 
    Where p.ParentID = pc.ParentID 
    FOR XML PATH('children'),TYPE) 
From (Select Distinct ParentID,ParentName 
     From #ParentChild) pc 
FOR XML PATH('parent'),TYPE 

DROP TABLE #ParentChild; 
+0

謝謝,我會盡力解決這個問題。 – Espen 2010-10-27 21:05:17

+2

-1不顯示層次結構 – 2012-03-28 10:29:26