Ir para conteúdo

Arquivado

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

  • 0
Rogchap

[Resolvido] Comando Sum e Case em firebird 2.5

Pergunta

Boa tarde pessoal preciso de ajuda, tenho que somar o valor do campo valor da tabela lancamentos o total por mes , de janeiro a dezembro .

  SELECT
  Sum(CASE WHEN extract (month from data) = 01 then valor
  END)as JANEIRO,
  Sum(CASE WHEN extract (month from data) = 02 then valor
  END)as FEVEREIRO,
  Sum(CASE WHEN extract (month from data) = 03 then valor
  END) as MARCO,
  Sum(CASE WHEN extract (month from data) = 04 then valor
  END) as ABRIL,
  Sum(CASE WHEN extract (month from data) = 05 then valor
  END) as MAIO,
  Sum(CASE WHEN extract (month from data) = 06 then valor
  END) as JUNHO,
  Sum(CASE WHEN extract (month from data) = 07 then valor
  END) as JULHO,
  Sum(CASE WHEN extract (month from data) = 08 then valor
  END) as AGOSTO,
  Sum(CASE WHEN extract (month from data) = 09 then valor
  END) as SETEMBRO,
  Sum(CASE WHEN extract (month from data) = 10 then valor
  END) as OUTUBRO,
  Sum(CASE WHEN extract (month from data) = 11 then valor
  END) as NOVEMBRO,
  Sum(CASE WHEN extract (month from data) = 12 then valor
  END) as DEZEMBRO



FROM tab_lancamentos
where extract (year from data) = 2018
and tipo_lancamento= 'D'
group by valor
order by id_lancamento

Só que ela me traz todos os valores por mes mas não soma. 

e o unico campo que ele aceita para group by e o valor os outros ele da erro de group. 

Se houver outra maneira mais inteligente de fazer eu aceito sugestões. obg. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

7 respostas a esta questão

Recommended Posts

Troque

 

then valor

 

Por

 

then valor else 0

 

Por que coluna quer agrupar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, quintelab disse:

Se entendi bem seu problema, você não precisa desses cases, e seu group by não faz sentido ser por valor. Seu GroupBY tem que ser por ano e por mês.

Quintelab eu preciso do case ou um outro de tipo condição, eu preciso que a tabela me traga  a soma dos valores por mês.

A tabela teria que ficar assim

Janeiro | fevereiro |Março -- --- até dezembro 

   2000   |  4000         | 3000  

Só que ela não soma ela traz todos os registros referentes ao mês 

Janeiro | fevereiro |Março -- --- até dezembro 

  500   |  1000         | 1000  

  1000 |  2000         | 1000

  500   |  1000         | 1000

Acredito que o erro deve ser na Group By e como voce falou teria que ser por  mês, tem que ser um campo que traga agregação.

ela aceita Group By Data mas não muda o resultado. e group By extract (month from data) da erro. 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Motta disse:

Troque

 

then valor

 

Por

 

then valor else 0

 

Por que coluna quer agrupar ?

E queria agrupar pela coluna data pegando os valores do  mês e resultando um total. Mas só pela data da erro que não contem  agregação.   

A tabela teria que ficar assim

Janeiro | fevereiro |Março -- --- até dezembro 

   2000   |  4000         | 3000  

Eu so preciso um único registro com esses  campos. 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 Mota deu certo resolvido acrescentei  then valor else 0 e exclui a Group  by e order by, sempre tive a ideia errada que o o Sum só funcionava com a agregação.  Valeu muito Obrigado!

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.