Duvida com Select - CASE
26/05/2015
0
tenho uma tabela assim:
Profissional - Quantidade - Mês
Nutricionista- 50 - JAN
Nutricionista- 56 - FEV
Nutricionista- 78 - MAR
Nutricionista- 23 - FEV
Medico - 33 - JAN
Enfermeiro - 44 - JAN
Medico - 73 - FEV
Medico - 23 - MAR
Enfermeiro - 24 - JAN
Enfermeiro - 44 - MAR
Como eu crio um comando SELECT para obter a soma dos profissionais por mês?
Profissional - JAN - FEV - MAR
Nutricionista- 50 - 79 - 78
Tentei assim:
select (case mes when 'JAN' then sum(quantidade) else 0 end), (case mes when 'FEV' then sum(quantidade) else 0 end), (case mes when 'MAR' then sum(quantidade) else 0 end) from producao where profissional = 'NUTRICIONISTA' group by mes
ele me retorna assim:
Profissional - JAN - FEV - MAR
Nutricionista- 50 - 0 - 0
Nutricionista- 0 - 79 - 0
Nutricionista- 0 - 0 - 78
alguem pode me ajudar?
abraço.
Italo Pereira
Post mais votado
Mais Posts
27/05/2015
Marcos P
Não existe solução trivial para isso !
Pesquise sobre "pivot" no firebird...
27/05/2015
Italo Pereira
:/
mas to tentando encontrar outras solucoes.
27/05/2015
Alex Lekao
nao sei se vai funcionar, mas testa ae.
select distinct(p.profissional), (select sum(p1.quantidade) from producao as p1 where p1.mes = 'JAN' and p1.profissional =p.profissional group by p1.mes) JAN, (select sum(p2.quantidade) from producao as p2 where p2.mes = 'FEV' and p2.profissional =p.profissional group by p2.mes) FEV, (select sum(p3.quantidade) from producao as p3 where p3.mes = 'MAR' and p3.profissional =p.profissional group by p3.mes) MAR from producao as p where (p.mes = 'JAN' or p.mes = 'FEV' or p.mes = 'MAR')
nunca fiz isso no firebird, faco sempre no sql e funciona balinha.
provavelmente vai ficar lento, mas vamos ver no que da, pelo menos resolve a questao no mais urgente, ai vc tera que procurar sobre pivot para melhorar a performance.
abraco.
27/05/2015
Marisiana Battistella
select (case mes when 'JAN' then sum(quantidade) else 0 end), (case mes when 'FEV' then sum(quantidade) else 0 end), (case mes when 'MAR' then sum(quantidade) else 0 end) from producao where profissional = 'NUTRICIONISTA' group by mes
27/05/2015
Italo Pereira
eu até tinha pensado nisso de ligar o profissional do select interno com o do select principal, mas não sabia como fazer.
agora é só fazer alguns ajustes aqui.
fico muito grato mesmo.
27/05/2015
Alex Lekao
so agora que vi que o fabiano havia sugerido o que sugeri.
kkkkkkkk
eh isso que da so passar o olho nas respostas da galera.
kkkkkkkkkkkkkk
27/05/2015
Italo Pereira
Sou grato a todos
27/05/2015
Alex Lekao
e Cara, vc recebeu uma dica dum cara que eh muito bom nessa parada de banco de dados.
aqui no forum temos muita gente boa.
Abraco.
27/05/2015
Italo Pereira
Atualmente estou andando mais em fóruns de desenvolvimento de jogos, e procuro sempre ajudar no que posso, pois também já passei por muito sufoco com alguns códigos. Kkkk.
27/05/2015
Marisiana Battistella
Sou grato a todos
Por nada Italo!
Sempre é bom participar dos fóruns, eu mesma já aprendi muito com o pessoal aqui...!
27/05/2015
Alex Lekao
Boa sorte com o seu trabalho.
abraco.
Atualmente estou andando mais em fóruns de desenvolvimento de jogos, e procuro sempre ajudar no que posso, pois também já passei por muito sufoco com alguns códigos. Kkkk.
Clique aqui para fazer login e interagir na Comunidade :)