Fórum Retorno da consulta por Meses #618570
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
1 | 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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)