¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como obter saldo inicial de SN em consulta SQL para intervalo de datas e campo de usuário U_CXC_CXP.

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

Olá a todos, me pedem uma consulta na qual seja possível solicitar um intervalo de datas específicas e conhecer o saldo do SN nessa data, levando em consideração que o saldo inicial com o qual o SN contava deve ser incluído. Esses saldos devem ser agrupados de acordo com um campo de usuário definido que eu já gerei (campo T1.[U_CXC_CXP]).

Até agora, só consegui obter os movimentos de acordo com os intervalos de datas iniciais e finais escolhidos pelo usuário, mas não consigo obter o saldo inicial do SN...

Alguém tem alguma sugestão?

Compartilho a consulta que tenho:

SELECT  (T0.[Debit]) , T0.[Credit], T0.[ShortName]

 FROM JDT1 T0 INNER JOIN OCRD T1 ON T0.SHORTNAME=T1.CARDCODE

WHERE  T0.[RefDate] BETWEEN '[%1]' AND '[%2]' AND T0.[ShortName] BETWEEN 'ACC-001' AND 'PSV-469' AND 
T1.[U_CXC_CXP] ='[%3]'

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

4 Respuestas

0
Cargando...

Existe alguma maneira de salvar a data inicial como variável para que o usuário não precise inseri-la?

Com sua consulta, não estou mais recebendo erro no SAP.

Agora o que resta fazer é somar o saldo inicial resultante da consulta mais o movimento do intervalo de datas escolhido pelo usuário para obter o SALDO FINAL do SN.

Muito obrigado.

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

Olá Yessica

Veja, corrigi a consulta e agora o saldo inicial será o correto


        SELECT T1.CardCode, T1.CardName, ISNULL((SELECT SUM(T2.Debit-T2.Credit) FROM JDT1 T2 WHERE T2.ShortName = T1.CardCode AND T2.RefDate <= '[%0]'),0)'Saldo Inicial', ISNULL((SUM(T0.Debit-T0.Credit)),0)'Saldo Atual'
        FROM OCRD T1
        LEFT JOIN JDT1 T0 ON T1.CardCode = T0.ShortName
        WHERE T0.RefDate BETWEEN '[%1]' AND '[%2]' AND T1.[U_CXC_CXP] IS NOT NULL
        GROUP BY T1.CardCode, T1.CardName
        
    

Vou te explicar como isso funciona.

Se o usuário quiser saber os movimentos de março de 2011, tudo anterior será saldo de abertura ou inicial, portanto, o primeiro filtro será em 28/02/2011 para que você veja o saldo anterior. Os dois filtros de data serão para o que o usuário deseja ver, que são 01/03/2011 e 31/03/2011.

Qual erro o query está te retornando do SAP?

Saudações

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

Olá Floyola, o saldo atual está correto, mas os dados que me são apresentados como saldo inicial estão incorretos. Também tenho uma dúvida, vejo que você coloca a condição WHERE T0.RefDate <= '20101231', o que acontece se o usuário solicitar os movimentos de todo o mês de março? Entendo que sua consulta traria como saldo inicial apenas o que for igual ou menor à data de 2010-12-31, certo?

Além disso, como sempre, por algum motivo no SQL a consulta funciona, mas no SAP dá erro. Estou te passando como estou executando.

SELECT T1.CardCode, T1.CardName, SUM(T0.Debit-T0.Credit)'Saldo Inicial', SUM(T2.Debit-T2.Credit)'Saldo Atual'
FROM JDT1 T0
INNER JOIN OCRD T1 ON T1.CardCode = T0.ShortName
INNER JOIN JDT1 T2 ON T2.ShortName = T1.CardCode
WHERE T0.RefDate <= '20101231' AND T1.[U_CXC_CXP] IS NOT NULL
GROUP BY T1.CardCode, T1.CardName


SELECT  (T0.[Debit]) , T0.[Credit], T0.[ShortName]

 FROM JDT1 T0 INNER JOIN OCRD T1 ON T0.SHORTNAME=T1.CARDCODE

WHERE  T0.[RefDate] BETWEEN '2011/01/01' AND '2011/01/31' AND T0.[ShortName] BETWEEN 'ACC-001' AND 'PSV-469' AND 
T1.[U_CXC_CXP] ='1'

Adicionei uma condição à consulta inicial para não trazer todos os SN.

Se tiveres alguma outra ideia de como resolver isso, me avise, ok?

Obrigado.

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

Olá

Experimente essa consulta


SELECT T1.CardCode, T1.CardName, SUM(T0.Debit-T0.Credit)'Saldo Inicial', SUM(T2.Debit-T2.Credit)'Saldo Atual'
FROM JDT1 T0
INNER JOIN OCRD T1 ON T1.CardCode = T0.ShortName
INNER JOIN JDT1 T2 ON T2.ShortName = T1.CardCode
WHERE T0.RefDate <= '20101231'
GROUP BY T1.CardCode, T1.CardName

Espero que seja útil,

Saudações

Editado por: Floyola em 25 de Abril de 2011 às 23:52

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?