Добавить атрибут к ElementNode, созданному TSQL FOR XML Path

Я пытаюсь сопоставить некоторые выходные данные XML в запросе SQL Server 2008 TSQL. Сопоставляемый XML может возвращать списки элементов. Списки идентифицируются по имени атрибута -, а не по имени узла.

Функции XML Path вернут узел-оболочку, но я не могу найти способ добавить какие-либо атрибуты к этому узлу. В моем случае это будут жестко закодированные значения, основанные на имени таблицы, которую я запускаю, для которой они выбираются.

У меня есть «x» как «x», чтобы разделить два списка. В моих реальных данных это не проблема, поскольку они находятся в разных узлах. Проблема только в том, как добавить атрибуты в узел «Список».

Вот страница SQL Fiddle для приведенного ниже примера:

Пример схемы

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

Фактический выход


  
    
    
    
  

  x

  
    
    
    
  

Желаемый результат:(Добавление атрибута «Имя» в оболочку списка.)


    
    
    
    
  

  x

    
    
    
    
  

6
задан Mark Elder 20 July 2012 в 19:11
поделиться