Prezados gostaria de uma ajuda para elaborar uma query onde possa retornar o saldo diário de varias contas bancárias. Possuo somente os lançamento de extrato ( na mesma tabela) conforme informações abaixo:
Data C.Conta Conta Valor Debito-Credito
01/01/2018 001 Conta A 10,00 C
01/01/2018 001 Conta A 100,00 C
01/01/2018 001 Conta A 20,00 D
01/01/2018 003 Conta C 50,00 C
01/01/2018 001 Conta A 10,00 D
02/02/2018 001 Conta A 10,00 C
02/02/2018 001 Conta A 90,00 C
02/02/2018 003 Conta C 70,00 C
03/02/2018 001 Conta A 5,00 D
03/02/2018 003 Conta C 15,00 D
03/02/2018 003 Conta C 7,00 D
preciso que retorne o seguinte:
Data C.Conta Conta Valor Tipo
01/01/2018 001 Conta A 0,00 Saldo Inicial
01/01/2018 001 Conta A 80,00 Saldo Final
01/01/2018 003 Conta C 0,00 Saldo Inicial
01/01/2018 003 Conta C 50,00 Saldo Final
02/01/2018 001 Conta A 80,00 Saldo Inicial
02/01/2018 001 Conta A 180,00 Saldo Final
02/01/2018 003 Conta C 50,00 Saldo Inicial
02/01/2018 003 Conta C 120,00 Saldo Final
03/01/2018 001 Conta A 180,00 Saldo Inicial
03/01/2018 001 Conta A 175,00 Saldo Final
03/01/2018 003 Conta C 120,00 Saldo Inicial
03/01/2018 003 Conta C 28,00 Saldo Final
obs.: Os saldo deverão ser apresentados em todos os dias.
Agradeço muito a ajuda
Saldo diário de conta (INICIAL E FINAL)
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Seg, 27 Ago 2012 8:19 pm
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Olá Jr,
acredito que a seguinte query te ajudará bastante.
Foi preciso fazer uso de funções analíticas e certos recursos para simular o saldo inicial e final.
acredito que a seguinte query te ajudará bastante.
Foi preciso fazer uso de funções analíticas e certos recursos para simular o saldo inicial e final.
WITH TAB AS (
select '01/01/2018' data_mov , '001' Cod_conta , 'Conta A' conta , 10.00 valor, 'C' tipo from dual union all
select '01/01/2018' data_mov , '001' Cod_conta , 'Conta A' conta , 100.0 valor, 'C' tipo from dual union all
select '01/01/2018' data_mov , '001' Cod_conta , 'Conta A' conta , 20.0 valor, 'D' tipo from dual union all
select '01/01/2018' data_mov , '003' Cod_conta , 'Conta C' conta , 50.0 valor, 'C' tipo from dual union all
select '01/01/2018' data_mov , '001' Cod_conta , 'Conta A' conta , 10.00 valor, 'D' tipo from dual union all
select '02/02/2018' data_mov , '001' Cod_conta , 'Conta A' conta , 10.0 valor, 'C' tipo from dual union all
select '02/02/2018' data_mov , '001' Cod_conta , 'Conta A' conta , 90.0 valor, 'C' tipo from dual union all
select '02/02/2018' data_mov , '003' Cod_conta , 'Conta C' conta , 70.0 valor, 'C' tipo from dual union all
select '03/02/2018' data_mov , '001' Cod_conta , 'Conta A' conta , 5.00 valor, 'D' tipo from dual union all
select '03/02/2018' data_mov , '003' Cod_conta , 'Conta C' conta , 15.00 valor, 'D' tipo from dual union all
select '03/02/2018' data_mov , '003' Cod_conta , 'Conta C' conta , 7.00 valor, 'D' tipo from dual)
, SALDOS AS (
SELECT 1 ID , 'SALDO INICIAL' DESCR FROM DUAL UNION ALL
SELECT 2 ID , 'SALDO FINAL' DESCR FROM DUAL
)
SELECT T.data_mov
, T.Cod_conta
, S.ID
, S.DESCR
, sum(decode(T.tipo,'C', T.VALOR , T.VALOR * -1)) mov
, CASE WHEN S.ID = 1 THEN
/* SALDO ACUM - MOV */
sum(sum(decode(T.tipo,'C', T.VALOR , T.VALOR * -1))) over ( PARTITION BY T.Cod_conta,S.ID ORDER BY T.data_mov, T.Cod_conta,S.ID) - sum(decode(T.tipo,'C', T.VALOR , T.VALOR * -1))
WHEN S.ID = 2 THEN
/* SALDO ACUM */
sum(sum(decode(T.tipo,'C', T.VALOR , T.VALOR * -1))) over ( PARTITION BY T.Cod_conta,S.ID ORDER BY T.data_mov, T.Cod_conta,S.ID)
END VALOR
FROM TAB T
, SALDOS S
WHERE 1 = 1
GROUP BY T.data_mov
, T.Cod_conta
, S.ID
, S.DESCR
ORDER BY T.data_mov
, T.Cod_conta
, S.ID
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Seg, 27 Ago 2012 8:19 pm
Daniel, bom dia!
Muito obrigado pela ajuda, a query funcionou corretamente, excelente.
Novamente muito obrigado ajuda.
Abraços,
Junior
Muito obrigado pela ajuda, a query funcionou corretamente, excelente.
Novamente muito obrigado ajuda.
Abraços,
Junior
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Seg, 27 Ago 2012 8:19 pm
Daniel, boa tarde!
A query funcionou pois adaptei na tabela que contem o extrato e esta tem a data (em formato de data). Mas estou tentando fazer um ajuste na mesma para carregar dias que não estão registrados no extrato, e que contem saldo. A dificuldade que estou tendo é que o saldo do dia só é apresentado se teve movimentação no extrato, gostaria que apresentasse o saldo mesmo sem movimentação da tabela do extrato.
você poderia me ajudar nesse ajuste?
Abraços,
A query funcionou pois adaptei na tabela que contem o extrato e esta tem a data (em formato de data). Mas estou tentando fazer um ajuste na mesma para carregar dias que não estão registrados no extrato, e que contem saldo. A dificuldade que estou tendo é que o saldo do dia só é apresentado se teve movimentação no extrato, gostaria que apresentasse o saldo mesmo sem movimentação da tabela do extrato.
você poderia me ajudar nesse ajuste?
Abraços,
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Opa,
dá uma olhada neste tópico:
http://glufke.net/oracle/viewtopic.php? ... +by#p36620
É possível gerar uma query que retorne todos dias do período informado.
Aí será necessário fazer a junção com a query principal, esta até com outter join devido a não possuir todos dias.
dá uma olhada neste tópico:
http://glufke.net/oracle/viewtopic.php? ... +by#p36620
É possível gerar uma query que retorne todos dias do período informado.
Aí será necessário fazer a junção com a query principal, esta até com outter join devido a não possuir todos dias.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes