我正在尝试将表转换为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')
Run Code Online (Sandbox Code Playgroud)
OUPUT >>>
<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>
Run Code Online (Sandbox Code Playgroud)
期望的产量>>>
<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>
Run Code Online (Sandbox Code Playgroud)
这可能还是我在做梦?没有XML EXPLICIT是可能的,还是这是EXPLICIT的用途?
我一直在尝试的另一种可能性是填充xml然后应用xquery,但还没有喜悦.
谢谢,
加里