Boa tarde,
estou precisando pegar um valor de um determinado mês e dividir pelo valor do mês anterior.
Tinha feito com sysdate -1 porem ele só vai me trazer o mês atual em que estamos -1.
Caso o mês que estiver na tabela for diferente como vou pegá-lo e dividir pelo valor que esta no mês anterior a ele?
ex.: mês_Ano|Valor mês_Ano |Valor
05/2012 |100 06/2012 | 50
Tenho que dividir 50/100 e mostrar o resultado.
Preciso fazer para todos os registros que há na tabela, com datas diferentes.
Talves é até algo simples, mais estou quebrando a cabeça com isso.
Abs.
mês atual / mês anterior
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 29 Jul 2013 10:49 am
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 29 Jul 2013 10:49 am
Obs.:Os campos mês_Ano não são do tipo data e sim do tipo varchar.eder.fagundes escreveu:Boa tarde,
estou precisando pegar um valor de um determinado mês e dividir pelo valor do mês anterior.
Tinha feito com sysdate -1 porem ele só vai me trazer o mês atual em que estamos -1.
Caso o mês que estiver na tabela for diferente como vou pegá-lo e dividir pelo valor que esta no mês anterior a ele?
ex.: mês_Ano|Valor mês_Ano |Valor
05/2012 |100 06/2012 | 50
Tenho que dividir 50/100 e mostrar o resultado.
Preciso fazer para todos os registros que há na tabela, com datas diferentes.
Talves é até algo simples, mais estou quebrando a cabeça com isso.
Abs.
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Oi Eder, Bem vindo ao fórum.
Sobre sua dúvida, gostaria de ver como você esta fazendo.
Sobre o "SYSDATE -1" , só diminui UM dia da data(no caso SYSDATE), talvez você queria fazer o ADD_MONTHS(data, -1), que diminui 1 mês da data.
Porém, no seu caso você tem 2 alternativas, ou faz 2 "subselects" para cada mês ou gera um select que incorpore os 2 meses e utilize funções mais avançadas da Oracle para realizar esta divisão.
Sobre sua dúvida, gostaria de ver como você esta fazendo.
Sobre o "SYSDATE -1" , só diminui UM dia da data(no caso SYSDATE), talvez você queria fazer o ADD_MONTHS(data, -1), que diminui 1 mês da data.
Porém, no seu caso você tem 2 alternativas, ou faz 2 "subselects" para cada mês ou gera um select que incorpore os 2 meses e utilize funções mais avançadas da Oracle para realizar esta divisão.
-
- Rank: Estagiário Pleno
- Mensagens: 3
- Registrado em: Seg, 29 Jul 2013 10:49 am
Ola Noctifero, obrigado pela resposta, foi justamente a maneira que consegui fazer, fiz dois select's dentro de outro select nomeando os select's como se fossem tabelas e fazendo inner join entre elas.
Ex.:
Dessa maneira consegui o resultado que queria...
Muito obrigado.
Ex.:
select * from(select campo1, campo2, campo3 from tabela where mês = TO_CHAR(ADD_MONTHS(TO_DATE('01/' || '08/2013', 'DD/MM/YYYY'),
-1),
'MM/YYYY')TAB1
INNER JOIN
(select campo1, campo2, campo3 from tabela where mês = TO_CHAR(ADD_MONTHS(TO_DATE('01/' || '08/2013', 'DD/MM/YYYY'),
-2),
'MM/YYYY')TAB2
ON TAB.CAMPO1 = TAB1.CAMPO1
Muito obrigado.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes