Я пытаюсь преобразовать таблицу в структуру XML и хочу, чтобы один из столбцов в моей таблице представлял родительский узел, а другой столбец - дочерний узел .
У меня есть часть пути, но у меня нет полного решения. Мне нужен столбец TABLE_NAME для преобразования в родительский узел xml и столбец COLUMN_NAME для преобразования в дочерние узлы. Если я выполню следующее, я получу вложение, но я также получу несколько родительских узлов.
select
TABLE_NAME AS 'tn',
COLUMN_NAME AS 'tn/cn'
from (
select 'TABLE_A' AS TABLE_NAME, 'COLUMN_1' AS COLUMN_NAME
UNION ALL
select 'TABLE_A' AS TABLE_NAME, 'COLUMN_2' AS COLUMN_NAME
UNION ALL
select 'TABLE_B' AS TABLE_NAME, 'COLUMN_1' AS COLUMN_NAME
UNION ALL
select 'TABLE_B' AS TABLE_NAME, 'COLUMN_2' AS COLUMN_NAME
) x
for xml path(''), ROOT('datatable')
ВЫВОД >>>
<datatable>
<tn>TABLE_A<cn>COLUMN_1</cn></tn>
<tn>TABLE_A<cn>COLUMN_2</cn></tn>
<tn>TABLE_B<cn>COLUMN_1</cn></tn>
<tn>TABLE_B<cn>COLUMN_2</cn></tn>
</datatable>
ЖЕЛАЕМЫЙ ВЫВОД >>>
<datatable>
<TABLE_A>
<cn>COLUMN_1</cn>
<cn>COLUMN_2</cn>
</TABLE_A>
<TABLE_B>
<cn>COLUMN_1</cn>
<cn>COLUMN_2</cn>
</TABLE_B>
</datatable>
Возможно ли это или мне снится? и возможно ли это без XML EXPLICIT, или для этого существует EXPLICIT?
Другая возможность, которую я пробовал, - это заполнить xml, а затем применить xquery, но это пока не радует.
] Спасибо,
Гэри