我正在尝试将一个表格转换成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,但是还没有成功。
谢谢,
Gary