Amigos, boa tarde.
Estou com uma necessidade onde eu tenho valores acumulados no decorrer de meses em uma tabela, porém preciso "desacumular" esses valores, acho que deve existir algum modo recursivo de se fazer isso com sql. Alguém já fez algo parecido?
Jan: Acumulado = 10; Desacumulado = 10 (Resultado do primeiro mês ainda não acumulado)
Fev: Acumulado = 20; Desacumulado = 10 ( Fev - Jan )
Mar: Acumulado = 50; Desacumulado = 30 ( Mar - Fev )
Abr: Acumulado = 49; Desacumulado = -1 ( Abril - Mar )
Desde já, muito obrigado!
Como desacumular valores
- dr_gori
- Moderador
- Mensagens: 5026
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Pode usar funções analíticas pra isso.
Veja: download/funcoes_ANALITICAS.html
No seu caso, eu criei essa tabela de exemplo:
Aí eu fiz essa query:

Veja: download/funcoes_ANALITICAS.html
No seu caso, eu criei essa tabela de exemplo:
create table thomas_test
(mês number
, acumulado number)
begin
insert into thomas_test values (1,10);
insert into thomas_test values (2,20);
insert into thomas_test values (3,50);
insert into thomas_test values (4,49);
end;
select
mês
, acumulado
, lag(acumulado,1,null) over (order by mês) anterior
, acumulado - lag(acumulado,1,null) over (order by mês) desacumulado
from thomas_test
/
mês ACUMULADO ANTERIOR DESACUMULADO
---------- ---------- ---------- ------------
1 10
2 20 10 10
3 50 20 30
4 49 50 -1

-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante