Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

John McLane

mes anterior

Recommended Posts

Opa,

Uma tabela possui algo como ID - VALOR - DATA. Para cada mes, existe apenas um valor. Eu preciso selecionar algo como ID - VALOR - DATA - VALOR NO MES ANTERIOR.

Como eu faço isso? Se fosse para um mes especifico, tranquilo. Juntava duas tabelas, apelidava uma de mes_atual outra de mes_anterior e filtrava pelos meses e beleza. Mas eu quero algo generico, que faça em todos os meses. E aí que mora o problema. Quando o mes for igual for igual a 1, o mes anterior devera ser igual a 12 e o ano ser decrementado em 1. Como faco isso pelo mysql? Nao tem como usar if dentro da clausula where, tem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estao como date. Mas eu ja percebi que estava tentando fazer da forma completamente errada. Eu queria subtrair a data na mão, usando ifs, mas obviamente existem funcoes mais adequadas para isso. Estou pesquisando sobre agora..

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT

tabela.ID AS ID, tabela.valor AS valor, tabela.data AS DATA , tabela_mes_passado.valor AS valor_mes_passado

FROM

tabela AS tabela

LEFT JOIN tabela AS tabela_mes_passado

ON

DATE_FORMAT( ADDDATE( tabela.data, INTERVAL -1 MONTH ) , '%Y%m%d' ) = DATE_FORMAT( tabela_mes_passado.data, '%Y%m%d' )

AND tabela.id = tabela_mes_passado.id

 

 

 

 

 

Mostra todos os dias e seus valores (se houver) no mes passado, ai você aumenta o where pra pegar os dias q você quer

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.