Avalados por :

Cómo evitar duplicados al vincular tablas en consultas SQL de SAP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 21 Vistas
0
Cargando...

Hola a todos,

He intentado obtener un informe que me muestre Facturas, cantidades y valores y sus Notas de Crédito relacionadas (cantidades y valores). Para lograrlo, utilicé esta plantilla de consulta:

SELECT

FROM

[dbo].[ORIN] T0 INNER JOIN

[dbo].[RIN1] T1 ON T0.DocEntry = T1.DocEntry LEFT JOIN

[dbo].[INV1] T2 ON T1.BaseEntry = T2.DocEntry AND T1.BaseLine = T2.LineNum AND T1.BaseType = 13 INNER JOIN

[dbo].[OINV] T3 ON T2.DocEntry = T3.DocEntry

Sin embargo, en el sistema SAP de mi empresa hay algunas facturas que están vinculadas a dos notas de crédito y ambas notas de crédito contienen todas las mismas líneas de facturas. En otras palabras, si hay 1 factura con 1 línea de factura de 3 UNIDADES, hay dos notas de crédito vinculadas a esta línea, una con una cantidad de 1 y la otra con una cantidad de dos.

Como habrás imaginado, esta situación me está causando mostrar duplicados y valores más altos para la factura.

¿Sabes cómo debería vincular estas tablas para evitar estos duplicados?

Saludos cordiales,

Julian

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Gordon,

Tienes razón, gracias a la gente en el foro pude resolverlo de manera más rápida. Por eso te agradecí a ti y a los demás, no solo en este hilo sino en todos los que abro.

Simplemente publiqué la solución que me funcionó, para que otras personas con la misma pregunta la encuentren útil.

P.D.: Tu libro "Dominando Consultas SQL para SAP Business One" también me ha sido de gran ayuda. Así que felicidades por eso, y gracias por la ayuda.

Saludos cordiales,

Julián

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Genial que hayas encontrado tu solución. Sin embargo, ¿podrías haberlo conseguido tan rápido sin la pista y la ayuda de los demás?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Thanks Gordon,

In order to avoid duplicates due to Credit Notes with multiple lines, it would be necessary to include a SELECT DISTINCT in the subqueries and then SUM both subqueries. Something like this:

SELECT T.[TYPE], T.[CR No],T.[Inv No], T.[Total]

FROM

(

SELECT [TYPE], [CR No], [Inv No], SUM([Total]) as Total

FROM (

SELECT DISTINCT 'CR Memo' as [TYPE], T0.DocNum as [CR No], T1.BaseRef as [Inv No],-T0.DocTotal as [Total]

FROM

[dbo].[ORIN] T0 INNER JOIN

[dbo].[RIN1] T1 ON T0.DocEntry = T1.DocEntry AND T1.BaseType = '13')

GROUP BY [TYPE],[CR No],[Inv No]

UNION

SELECT [TYPE], [CR No], [Inv No], SUM([Total]) as Total

FROM (

SELECT DISTINCT

'Invoice' as  [TYPE], T3.DocNum as [CR No], T1.DocNum as [Inv No], T1.DocTotal as [Total]

FROM

[dbo].[INV1] T0 INNER JOIN

[dbo].[OINV] T1 ON T0.DocEntry = T1.DocEntry  INNER JOIN

[dbo].[RIN1] T2 ON T2.DocEntry = T0.TrgetEntry  INNER JOIN

[dbo].[ORIN] T3 ON T3.DocEntry = T2.DocEntry

WHERE T0.TargetType='14')

GROUP BY [TYPE],[CR No],[Inv No]

) T

ORDER BY T.[CR No]

Kind Regards

Julian

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Julian,

Prueba de esta manera en su lugar:

SELECT T.[TIPO], T.[CR N°], T.[N° de Inv], T.[Total]

FROM

(SELECT 'Nota de Crédito' as [TIPO], T0.DocNum as [CR N°], T1.BaseRef as [N° de Inv], -T0.DocTotal as [Total]

FROM

[dbo].[ORIN] T0 INNER JOIN

[dbo].[RIN1] T1 ON T0.DocEntry = T1.DocEntry AND T1.BaseType = '13'

UNION

SELECT

'Factura' as [TIPO], T3.DocNum as [CR N°], T1.DocNum as [N° de Inv], T1.DocTotal as [Total]

FROM

[dbo].[INV1] T0 INNER JOIN

[dbo].[OINV] T1 ON T0.DocEntry = T1.DocEntry INNER JOIN

[dbo].[RIN1] T2 ON T2.DocEntry = T0.TrgetEntry INNER JOIN

[dbo].[ORIN] T3 ON T3.DocEntry = T2.DocEntry

WHERE T0.TargetType='14'

) T

ORDER BY T.[CR N°]

Gracias,

Gordon

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?