Avalados por :

Como evitar duplicatas ao vincular tabelas em consultas SQL do SAP

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

Olá a todos,

Tenho tentado obter um relatório que mostre Faturas, quantidades e valores e suas Notas de Crédito relacionadas (quantidades e valores). Para fazer isso, utilizei este modelo 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

No entanto, no sistema SAP da minha empresa, existem algumas faturas que estão vinculadas a duas notas de crédito e ambas as notas de crédito contêm todas as mesmas linhas de faturas. Em outras palavras, se houver 1 fatura com 1 linha de fatura de 3 UNIDADES, existem duas notas de crédito vinculadas a esta linha, uma com uma quantidade de 1 e a outra com uma quantidade de dois.

Como você pode imaginar, essa situação está causando a exibição de duplicatas e valores mais altos para a fatura.

Você sabe como devo vincular essas tabelas para evitar essas duplicatas?

Atenciosamente,

Julian

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

4 Respuestas

0
Cargando...

Olá Gordon,

Você está certo, graças às pessoas no fórum pude resolver mais rapidamente. Por isso, agradeço a você e aos outros, não apenas neste tópico, mas em todos que abro.

Simplesmente publiquei a solução que funcionou para mim, para que outras pessoas com a mesma pergunta a encontrem útil.

P.S.: Seu livro "Dominando Consultas SQL para SAP Business One" também tem sido de grande ajuda para mim. Então, parabéns por isso, e obrigado pela ajuda.

Atenciosamente,

Julián

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

Ótimo que tenha encontrado sua solução. Mas, será que teria conseguido tão rapidamente sem a dica e a ajuda dos outros?

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

Obrigado, Gordon,

Para evitar duplicatas devido a Notas de Crédito com várias linhas, seria necessário incluir um SELECT DISTINCT nas subconsultas e depois SOMAR ambas as subconsultas. Algo assim:

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

DE

(

SELECT [TIPO], [CR No], [Inv No], SOMA([Total]) como Total

DE (

SELECT DISTINCT 'Memorando de Crédito' como [TIPO], T0.DocNum como [CR No], T1.BaseRef como [Inv No],-T0.DocTotal como [Total]

DE

[dbo].[ORIN] T0 INNER JOIN

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

AGRUPAR POR [TIPO],[CR No],[Inv No]

UNIÃO

SELECT [TIPO], [CR No], [Inv No], SOMA([Total]) como Total

DE (

SELECT DISTINCT

'Fatura' como [TIPO], T3.DocNum como [CR No], T1.DocNum como [Inv No], T1.DocTotal como [Total]

DE

[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

ONDE T0.TargetType='14')

AGRUPAR POR [TIPO],[CR No],[Inv No]

) T

ORDENAR POR T.[CR No]

Atenciosamente,

Julian

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

Olá Julian,

Tente desta forma em vez disso:

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

'Fatura' 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º]

Obrigado,

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?