Я пытаюсь сопоставить некоторые выходные данные 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