2015-04-03 94 views
-1

我試圖創建一個使用這種方法我的表中的XML輸出中,但它似乎對複製TopLevelItem .Ideally多個節點我希望的格式會是這樣:XML結構

<TopLevelItems> 

    <TopLevelItem field1="1"> 
    <LowLevelItem fieldA="a" /> 
    <LowLevelItem fieldA="b" /> 
    <LowLevelItem fieldA="def" /> 
    </TopLevelItem> 

    <TopLevelItem field1="2"> 
    <LowLevelItem fieldA="c" /> 
    <LowLevelItem fieldA="d" /> 
    </TopLevelItem> 

</TopLevelItems> 


DECLARE @sites TABLE (username varchar(50), ID INT, Name VARCHAR(50)) 
INSERT INTO @sites 
VALUES ('a', 1, 'a'), 
     ('a', 1, 'b'), 
     ('a', 2, 'c'), 
     ('a', 2, 'd'), 
     ('b', 1, 'def') 


     select 
    T.ID as '@field1', 

    ((select 
     L.Name as '@fieldA' 

    from @sites as L 
    where T.ID = L.ID 
    for xml path('LowLevelItem'), type)) 
from @sites as T 
for xml path('TopLevelItem'), root('TopLevelItems') 

讓我知道如果我在我的查詢中丟失任何東西或者我使用的方法不正確。

在此先感謝。

回答

0
SELECT T.ID AS '@field1' 
     , ((SELECT L.Name AS '@fieldA' 
      FROM  @sites AS L 
      WHERE T.ID = L.ID 
     FOR 
      XML PATH('LowLevelItem') 
      , TYPE) 
     ) 
FROM (SELECT DISTINCT ID FROM @sites) AS T 
FOR  XML PATH('TopLevelItem') 
      , ROOT('TopLevelItems') 
+0

謝謝,那個作品 – devloper 2015-04-04 04:02:28

+0

不客氣!對不起,爲簡潔起見;家人回家後,我正在完成:) – 2015-04-04 04:24:26