6
我想在SQL Server 2008 TSQL查詢中匹配一些XML輸出。我匹配的XML可以返回項目列表。列表由屬性名稱標識 - 而不是節點名稱。將屬性添加到由TSQL FOR XML路徑創建的ElementNode
XML路徑函數將返回一個包裝節點,但我找不到添加任何屬性到該節點的方法。在我的情況下,他們將根據我選擇運行的表名進行硬編碼。
我在那裏有'x'作爲'x'來保持兩個列表分開。在我的實際數據中,這不是一個問題,因爲它們在不同的節點中。問題是如何將屬性添加到「List」節點。
這裏是一個SQL Fiddle page for the example below:
示例模式
create table Table1 (Value varchar(50));
create table Table2 (Value varchar(50));
insert Table1 values
('A'), ('B'), ('C');
insert Table2 values
('X'), ('Y'), ('Z');
樣品選擇
select
(
select Value as '@I'
from Table1
for XML PATH('L'), TYPE
) as List,
'x' as 'x', -- needed to keep the Lists apart.
(
select Value as '@I'
from Table2
for XML PATH('L'), TYPE
) as List
for XML PATH
實際輸出
<row>
<List>
<L I="A"/>
<L I="B"/>
<L I="C"/>
</List>
<x>x</x>
<List>
<L I="X"/>
<L I="Y"/>
<L I="Z"/>
</List>
</row>
所需的輸出:(添加「N AME」屬性列表中包裝。)
<row>
<List Name='Table1'> <!-- Added Attribute "Name" here -->
<L I="A"/>
<L I="B"/>
<L I="C"/>
</List>
<x>x</x>
<List Name='Table2'> <!-- Added Attribute "Name" here -->
<L I="X"/>
<L I="Y"/>
<L I="Z"/>
</List>
</row>