Dúvida Query Running totais saldos baixas parciais
Prezados, bom dia. Estou montando uma query para um relatório sobre baixas de títulos e seus Históricos de baixas.
Tenho uma tabela de títulos e outra que registra as baixas parciais destes títulos até que o título esteja totalmente baixado.
Preciso apresentar o saldo dos títulos em uma determinada data (saldo sendo composto através de memória de cálculo contendo todas as baixas anteriores) e o saldo após a baixa nesta data.
O título pode ter várias baixas parciais e elas ficam registradas na tabela de baixas.
Eu montei a Query para análise de UM título, consigo compor a memória de calculo, e o saldo atual dele, mas queria saber se é possível fazer o mesmo para os diversos títulos da tabela.
As tabelas envolvidas são mais ou menos assim:
Tab_Titulo (registro dos títulos)
Numero_titulo Prefixo Parcela Cliente Valor_itulo Data_Vencimento
1012 100 4000 20170814
1013 150 5000 20170818
1020 099 1500 20170813
Tab_Baixa (registro das baixas dos títulos)
Numero_titulo Prefixo Parcela Cliente Valor_Baixa Data_Baixa
1012 100 500 20170814
1012 100 1.05 20170815
1012 100 70 20170815
1012 100 650 20170815
1012 100 150 20170816
1013 150 200 20170810
1013 150 500 20170814
1013 150 500 20170815
1020 099 500 20170816
Olhando para o dia 16/08/2016 o título 1012 inicia o dia tendo um saldo de 2778.95 (400-todas as baixas anteriores) e ao ser efetuada a baixa do dia 16/05, o saldo vai para 2628.95.
Consigo montar corretamente esta situação para este título mas preciso mostrar também o título 1020, pois no dia 16/08 ele também teve uma baixa e ficaria com saldo inicial de 1500 e saldo final de 1000.
A dúvida é justamente esta, como apresentar não apenas um título, mas todos os títulos que tiveram baixa na data especificada apresentando também seus saldos iniciais daquele dia?
Estou anexando uma planilha para melhor visualização do resultado e do histórico de baixas do título 1012, caso achem que aqui não ficou bem claro.
A query que estou usando está abaixo, agradeço toda ajuda
SELECT TAB_BAIXA_PREFIXO AS [PREFIXO],
TAB_BAIXA_NUMERO AS [NUMERO],
TAB_BAIXA_PARCELA AS [PARCELA],
TAB_BAIXA_CLIENTE AS [CODCLI],
Tab_Cliente_NOME AS [DESCCLI],
Tab_Titulo_VENCTOREAL AS [VENCIMENTO],
TAB_BAIXA_DATA AS [DT BAIXA],
Tab_Titulo_VALOR AS [VL_ORIGINAL],
Tab_Titulo_VALOR - (SELECT ISNULL(SUM(TAB_BAIXA_VALOR),'0') FROM TAB_BAIXA WHERE TAB_BAIXA_NUMERO = '1012' AND TAB_BAIXA_DATA < '20170816' AND TAB_BAIXA_CLIENTE = '100') AS [SALDO_BAIXAS_ANTERIORRES],
TAB_BAIXA_VALOR AS [VALOR_BAIXA_NA_DATA],
Tab_Titulo_VALOR - (SELECT ISNULL(SUM(TAB_BAIXA_VALOR),'0') FROM TAB_BAIXA WHERE TAB_BAIXA_NUMERO = '1012' AND TAB_BAIXA_DATA < '20170816' AND TAB_BAIXA_CLIENTE = '100') -
SUM (TAB_BAIXA_VALOR) OVER(PARTITION by TAB_BAIXA_NUMERO ORDER BY Tab_Titulo_VALOR ROWS UNBOUNDED PRECEDING) AS SALDO_ATUAL, TAB_BAIXA_HISTOR AS [HISTORICO BAIXA DO DIA]
FROM TAB_BAIXA
INNER JOIN Tab_Titulo
ON
Tab_Titulo.PREFIXO = TAB_BAIXA.TAB_BAIXA_PREFIXO AND
Tab_Titulo.NUM = TAB_BAIXA.TAB_BAIXA_NUMERO AND
Tab_Titulo.PARCELA = TAB_BAIXA.TAB_BAIXA_PARCELA AND
Tab_Titulo.CLIENTE = TAB_BAIXA.TAB_BAIXA_CLIENTE AND
Tab_Titulo.LOJA = TAB_BAIXA.TAB_BAIXA_LOJA
INNER JOIN Tab_Cliente
ON
Tab_Titulo_CLIENTE = Tab_Cliente_COD AND
Tab_Titulo_FILIAL = Tab_Cliente_FILIAL
WHERE
TAB_BAIXA_DATA = '20170816' AND --- Data da Baixa que estamos analisando o título
AND Tab_Titulo_NUM = ('1012')
Discussão (2)
Carregando comentários...