Hola.
Resulta que tengo un XML (cantidad de Prestaciones son variables) que importo a SQL Server y obtengo los datos con el query que les detallo abajo
El problema que tengo es que obtengo el siguiente resultado
Nombre Nombre Codigo
Juan Perez 10
Juan Perez 10
Juan Perez 10
Y lo que necesito es
Nombre Nombre Codigo
Juan Perez 10
Juan Perez 20
Juan Perez 30
XML: (la cantidad de Prestaciones son variables)
Código XML:
Ver original<?xml version="1.0" encoding="utf-8"?>
<Novedad>
<Nombre>Juan</Nombre>
<Apellido>Perez</Apellido>
<Prestaciones>
<Codigo>10</Codigo>
<Codigo>20</Codigo>
<Codigo>30</Codigo>
</Prestaciones>
</Novedad>
Query:
Código SQL:
Ver originalDECLARE @doc xml
SELECT @doc = BulkColumn
FROM openrowset(
bulk 'D:\Prueba2.xml', SINGLE_CLOB
) AS xmlData
SELECT Cabecera.VALUE('Nombre[1]', 'VARCHAR(40)') AS Nombre,
Cabecera.VALUE('Apellido[1]', 'VARCHAR(40)') AS Nombre,
Prestaciones.VALUE('Codigo[1]', 'VARCHAR(40)') AS Codigo
FROM @doc.nodes('/Novedad') AS x1(Cabecera)
CROSS apply x1.Cabecera.nodes('./Prestaciones') AS x2(Prestaciones)
CROSS apply x2.Prestaciones.nodes('./Codigo') AS x3(Codigo)