Retorno da consulta por Meses
16/08/2022
0
Pessoal, estou precisando retornar o valor total de receita e valor total de despesas por mês nesse estilo:
Despesa Receita
Janeiro 50.00 200.00
Fevereiro 0 500.00
Março 100.00 500.00
Cheguei a essa consulta abaixo mas esta retornando o mesmo valor para todos os mês
O Retorno esta assim
Despesa Receita
Janeiro 50.00 200.00
Fevereiro 50.00 200.00
Março 50.00 200.00
Alguém consegue me ajudar com essa consulta?
Obrigado
Despesa Receita
Janeiro 50.00 200.00
Fevereiro 0 500.00
Março 100.00 500.00
Cheguei a essa consulta abaixo mas esta retornando o mesmo valor para todos os mês
SELECT MONTHNAME(`data_vencimento`) as mes, (SELECT SUM(`valor`) as valor_total FROM lancamentos WHERE tipo = 'despesa' and YEAR(`data_vencimento`) = 2022 AND `empresa` = 1) as despesas, (SELECT SUM(`valor`) as valor_total FROM lancamentos WHERE tipo = 'receita' and YEAR(`data_vencimento`) = 2022 AND `empresa` = 1) as receitas From lancamentos GROUP BY MONTH(`data_vencimento`) ORDER BY MONTH (`data_vencimento`);
O Retorno esta assim
Despesa Receita
Janeiro 50.00 200.00
Fevereiro 50.00 200.00
Março 50.00 200.00
Alguém consegue me ajudar com essa consulta?
Obrigado
Fabio Zech
Curtir tópico
+ 0
Responder
Posts
26/12/2022
Arthur Heinrich
Comece pelo básico, depois formate.
No MySQL, as datas são armazenadas em formato 'YYYYMMDD'. Se você quer o mês, pode pegar os primeiros 6 caracteres.
SELECT
substring(`data_vencimento`,1,6) as mes,
sum(case tipo = 'despesa' then `valor` else 0 end) as despesas,
sum(case tipo = 'receita' then `valor` else 0 end) as receitas
From lancamentos
GROUP BY substring(`data_vencimento`,1,6)
ORDER BY 1;
Depois, se quiser, formate o mês como quiser.
No MySQL, as datas são armazenadas em formato 'YYYYMMDD'. Se você quer o mês, pode pegar os primeiros 6 caracteres.
SELECT
substring(`data_vencimento`,1,6) as mes,
sum(case tipo = 'despesa' then `valor` else 0 end) as despesas,
sum(case tipo = 'receita' then `valor` else 0 end) as receitas
From lancamentos
GROUP BY substring(`data_vencimento`,1,6)
ORDER BY 1;
Depois, se quiser, formate o mês como quiser.
Responder
Clique aqui para fazer login e interagir na Comunidade :)