Retorno da consulta por Meses

MySQL

16/08/2022

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

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

Fabio Zech

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

16/08/2022

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.
GOSTEI 0
POSTAR