Преобразование таблицы SQL в XML со столбцом в качестве родительского узла

Я пытаюсь преобразовать таблицу в структуру 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, но это пока не радует.

] Спасибо,

Гэри

6
задан Joe Stefanelli 24 September 2010 в 20:26
поделиться