Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2016, 14:44
pana99
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Importar XML - Cross Aplly Columnas Variables

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
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Novedad>
  3.       <Nombre>Juan</Nombre>
  4.       <Apellido>Perez</Apellido>
  5.       <Prestaciones>
  6.              <Codigo>10</Codigo>
  7.          <Codigo>20</Codigo>
  8.          <Codigo>30</Codigo>
  9.       </Prestaciones>  
  10. </Novedad>

Query:
Código SQL:
Ver original
  1. DECLARE @doc xml
  2. SELECT    @doc = BulkColumn
  3. FROM    openrowset(
  4.             bulk 'D:\Prueba2.xml', SINGLE_CLOB
  5.         ) AS xmlData
  6.  
  7. SELECT  Cabecera.VALUE('Nombre[1]', 'VARCHAR(40)') AS Nombre,
  8.         Cabecera.VALUE('Apellido[1]', 'VARCHAR(40)') AS Nombre,
  9.         Prestaciones.VALUE('Codigo[1]', 'VARCHAR(40)') AS Codigo
  10. FROM    @doc.nodes('/Novedad') AS x1(Cabecera)
  11. CROSS apply x1.Cabecera.nodes('./Prestaciones') AS x2(Prestaciones)
  12. CROSS apply x2.Prestaciones.nodes('./Codigo') AS x3(Codigo)