XML结构
问题描述:
我试图创建一个使用这种方法我的表中的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')
让我知道如果我在我的查询中丢失任何东西或者我使用的方法不正确。
在此先感谢。
答
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')
谢谢,那个作品 – devloper 2015-04-04 04:02:28
不客气!对不起,为简洁起见;家人回家后,我正在完成:) – 2015-04-04 04:24:26