Estoy tratando de transformar una tabla en una estructura XML y quiero que una de las columnas en mi tabla represente un nodo principal y la otra columna represente un nodo secundario.Transformar la tabla SQL en XML con la columna como nodo principal
Tengo parte del camino, pero no tengo la solución completa. Necesito que la columna TABLE_NAME se transforme en un nodo padre xml y la columna COLUMN_NAME para transformarlos en nodos secundarios. Si ejecuto lo siguiente obtengo el anidamiento pero también obtengo varios nodos principales.
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')
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>
salida deseada >>>
<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>
Es esto posible o estoy soñando? y es posible sin XML EXPLICIT o es este el tipo de cosas EXPLICIT que hay para?
La otra posibilidad que he estado intentando es rellenar el xml y luego aplicar una xquery, pero aún no me alegro con eso.
Gracias,
Gary
@Gary, que dialecto de SQL (Ora cle, SQLServer, MySQL, etc.) ¿estás usando? Algunos de ellos tienen extensiones dialecto-específicas para manejar XML. –
Hola Mark, estoy usando el M $ SQL Server 2008 R2, edición estándar –
¿Ha considerado exportar a XML y luego ejecutar una transformación XSL en él? –