Realice una prueba y cambiando solo el numero que esta entre [1] por el numero de campo que quieres te lo va a dar, por ejemplo tu caso para elegir el segundo tendrás que cambiar el por el 1 por el 2 algo así!
Insert into SBO_SIP_Facturas (Folio,FechaTimbrado,NoCertificadoSAT,SelloCFD,
SelloSAT,UUID,Version,UsoCFDI,Rfc,Importe, ValorUnitario,Descripcion,ClaveUnidad,Cantidad,ClaveProdServ) SELECT
Comprobante.value('@Folio','int')'Folio',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@FechaTimbrado)[1]','datetime')'FechaTimbrado',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@NoCertificadoSAT)[1]','nvarchar(MAX)')'NoCertificadoSAT',
Comprobante.value('@Sello','nvarchar(MAX)')'SelloCFD',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@SelloSAT)[1]','nvarchar(MAX)')'SelloSAT',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@UUID)[1]','nvarchar(MAX)')'UUID',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@Version)[1]','decimal(18, 1)')'Version',
Comprobante.value('(cfdi:Receptor/@UsoCFDI)[1]','nvarchar(MAX)')'UsoCFDI',
Comprobante.value('(cfdi:Emisor/@Rfc)[1]','nvarchar(MAX)') 'Rfc',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Importe)[2]','nvarchar(MAX)') 'Importe',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ValorUnitario)[2]','nvarchar(MAX)') 'ValorUnitario',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Descripcion)[2]','nvarchar(MAX)') 'Descripcion',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ClaveUnidad)[2]','nvarchar(MAX)') 'ClaveUnidad',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Cantidad)[2]','nvarchar(MAX)') 'Cantidad',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ClaveProdServ)[2]','nvarchar(MAX)') 'ClaveProdServ'
FROM @xml.nodes ('/cfdi:Comprobante') t1(Comprobante)
END
- <cfdi:Conceptos>
- <cfdi:Concepto ClaveProdServ="78121600" Cantidad="1.000000" ClaveUnidad="E48" Descripcion="RECEPCION, RESGUARDO, ESTADIA Y TRANSVASE DE CARRO TANQUE" ValorUnitario="720.00" Importe="720.00">
- <cfdi:Impuestos>
+ <cfdi:Traslados>
<cfdi:Traslado Base="720.00" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.160000" Importe="115.20" />
</cfdi:Traslados>
</cfdi:Impuestos>
</cfdi:Concepto>
- <cfdi:Concepto ClaveProdServ="78121600" Cantidad="3.000000" ClaveUnidad="E48" Descripcion="BASCULA PIPA" ValorUnitario="4.00" Importe="12.00">
Omite los NULL ya que estuve haciendo pruebas
Ya solo tendrías que agregar un ciclo para que realice la inserción hasta que llegue a 0 o null
o en caso contrario que no encuentres la forma de hacer el ciclo, solo cambiando el numero de corchetes y crear un SP que elimine los registros con Null. Me doy cuenta que si lo repites se insertan al mismo tiempo.
Insert into SBO_SIP_Facturas (Folio,FechaTimbrado,NoCertificadoSAT,SelloCFD,
SelloSAT,UUID,Version,UsoCFDI,Rfc,Importe, ValorUnitario,Descripcion,ClaveUnidad,Cantidad,ClaveProdServ) SELECT
Comprobante.value('@Folio','int')'Folio',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@FechaTimbrado)[1]','datetime')'FechaTimbrado',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@NoCertificadoSAT)[1]','nvarchar(MAX)')'NoCertificadoSAT',
Comprobante.value('@Sello','nvarchar(MAX)')'SelloCFD',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@SelloSAT)[1]','nvarchar(MAX)')'SelloSAT',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@UUID)[1]','nvarchar(MAX)')'UUID',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@Version)[1]','decimal(18, 1)')'Version',
Comprobante.value('(cfdi:Receptor/@UsoCFDI)[1]','nvarchar(MAX)')'UsoCFDI',
Comprobante.value('(cfdi:Emisor/@Rfc)[1]','nvarchar(MAX)') 'Rfc',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Importe)[1]','nvarchar(MAX)') 'Importe',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ValorUnitario)[1]','nvarchar(MAX)') 'ValorUnitario',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Descripcion)[1]','nvarchar(MAX)') 'Descripcion',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ClaveUnidad)[1]','nvarchar(MAX)') 'ClaveUnidad',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Cantidad)[1]','nvarchar(MAX)') 'Cantidad',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ClaveProdServ)[1]','nvarchar(MAX)') 'ClaveProdServ'
FROM @xml.nodes ('/cfdi:Comprobante') t1(Comprobante)
;WITH xmlnamespaces('http://www.sat.gob.mx/cfd/3' AS cfdi
, 'http://www.w3.org/2001/XMLSchema-instance' AS xsi
, 'http://www.sat.gob.mx/TimbreFiscalDigital' AS tfd
, 'http://www.sat.gob.mx/TimbreFiscalDigital' AS schemaLocation)
Insert into SBO_SIP_Facturas (Folio,FechaTimbrado,NoCertificadoSAT,SelloCFD,
SelloSAT,UUID,Version,UsoCFDI,Rfc,Importe, ValorUnitario,Descripcion,ClaveUnidad,Cantidad,ClaveProdServ) SELECT
Comprobante.value('@Folio','int')'Folio',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@FechaTimbrado)[1]','datetime')'FechaTimbrado',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@NoCertificadoSAT)[1]','nvarchar(MAX)')'NoCertificadoSAT',
Comprobante.value('@Sello','nvarchar(MAX)')'SelloCFD',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@SelloSAT)[1]','nvarchar(MAX)')'SelloSAT',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@UUID)[1]','nvarchar(MAX)')'UUID',
Comprobante.value('(/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital/@Version)[1]','decimal(18, 1)')'Version',
Comprobante.value('(cfdi:Receptor/@UsoCFDI)[1]','nvarchar(MAX)')'UsoCFDI',
Comprobante.value('(cfdi:Emisor/@Rfc)[1]','nvarchar(MAX)') 'Rfc',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Importe)[2]','nvarchar(MAX)') 'Importe',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ValorUnitario)[2]','nvarchar(MAX)') 'ValorUnitario',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Descripcion)[2]','nvarchar(MAX)') 'Descripcion',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ClaveUnidad)[2]','nvarchar(MAX)') 'ClaveUnidad',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@Cantidad)[2]','nvarchar(MAX)') 'Cantidad',
Comprobante.value('(/cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/@ClaveProdServ)[2]','nvarchar(MAX)') 'ClaveProdServ'
FROM @xml.nodes ('/cfdi:Comprobante') t1(Comprobante)
END