6
나는 SQL 서버 2008 TSQL 쿼리의 일부 XML 출력을 일치하려고위한 TSQL 만든 ElementNode합니다. 일치하는 XML은 List 목록을 반환 할 수 있습니다. 목록은 노드 이름이 아닌 속성 이름으로 식별됩니다.추가 속성은 XML 경로
는 XML 경로 함수는 래퍼 노드를 반환하지만 해당 노드에 어떤 속성을 추가 할 수있는 방법을 찾을 수 없습니다. 내 경우에는 그들이 선택하는 테이블 이름에 따라 하드 코딩 된 값이됩니다.
나는 분리 된 두 개의 목록을 유지하기 위해 거기에 'X'로 'X'를 가지고있다. 내 실제 데이터에서는 다른 노드에있는 것과 같이 문제가되지 않습니다. 문제는 "List"노드에 속성을 추가하는 것입니다.샘플 스키마
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 추가 여기
는 SQL Fiddle page for the example below입니다 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>