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 original
DECLARE @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)