ma8926167 Postado Julho 16, 2018 Denunciar Share Postado Julho 16, 2018 Boa tarde, Preciso de uma ajuda para consultar, onde os meses ficasse em colunas. Qual melhor maneira de fazer isso? Aqui um exemplo: http://sqlfiddle.com/#!17/a1091/7/0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dr. House Postado Julho 16, 2018 Denunciar Share Postado Julho 16, 2018 você qur fazer o q exatamente? between? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ma8926167 Postado Julho 16, 2018 Autor Denunciar Share Postado Julho 16, 2018 3 minutos atrás, Dr. House disse: você qur fazer o q exatamente? between? Queria fazer esse exemplo abaixo: Categoria | SubCategoria | Janeiro | Fevereiro | Transportes | Carro | 150 | 50 | Transportes | Onibus | 0 | 50 | Alimentação | Mercado | 100 | 250 | Alimentação | Restaurante | 100 | 50 | Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dr. House Postado Julho 16, 2018 Denunciar Share Postado Julho 16, 2018 1 minuto atrás, ma8926167 disse: Queria fazer esse exemplo abaixo: Categoria | SubCategoria | Janeiro | Fevereiro | Transportes | Carro | 150 | 50 | Transportes | Onibus | 0 | 50 | Alimentação | Mercado | 100 | 250 | Alimentação | Restaurante | 100 | 50 | isso ai só c subcquery. cada mes uma subcquery Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ma8926167 Postado Julho 16, 2018 Autor Denunciar Share Postado Julho 16, 2018 39 minutos atrás, Dr. House disse: isso ai só c subcquery. cada mes uma subcquery Você poderia dar exemplo apenas de um mês pra ver como é feito? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dr. House Postado Julho 16, 2018 Denunciar Share Postado Julho 16, 2018 (editado) SELECT COALESCE(c.nome,'Total') as Categoria, COALESCE(s.nome,'Total') as SubCategoria , sum("valor") as Valores, coalesce(f.mes,'eu odeio nulo') as mes, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'janeiro') as janeiro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'fevereiro') as fevereiro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'marco') as marco, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'abril') as abril, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'maio') as maio, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'junho') as junho, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'julho') as julho, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'agosto') as agosto, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'setembro') as setembro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'outubro') as outubro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'novembro') as novembro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'dezembro') as dezembro FROM public."fluxo" f inner join "categoria" c on c.id_cat = f.id_cat inner join "subcategoria" s on s.id_sub = f.id_sub group by rollup (c.nome,s.nome,f.mes) order by c.nome, s.nome, f.mes desc nesse caso a field mes já pode ate deixar de existir 28 minutos atrás, Dr. House disse: SELECT COALESCE(c.nome,'Total') as Categoria, COALESCE(s.nome,'Total') as SubCategoria , sum("valor") as Valores, coalesce(f.mes,'eu odeio nulo') as mes, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'janeiro') as janeiro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'fevereiro') as fevereiro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'marco') as marco, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'abril') as abril, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'maio') as maio, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'junho') as junho, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'julho') as julho, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'agosto') as agosto, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'setembro') as setembro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'outubro') as outubro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'novembro') as novembro, (select coalesce(sum(valor),0) from fluxo fl where fl.mes = f.mes and fl.mes ilike 'dezembro') as dezembro FROM public."fluxo" f inner join "categoria" c on c.id_cat = f.id_cat inner join "subcategoria" s on s.id_sub = f.id_sub group by rollup (c.nome,s.nome,f.mes) order by c.nome, s.nome, f.mes desc nesse caso a field mes pode ate deixar de existir Editado Julho 16, 2018 por Dr. House Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cassella Postado Fevereiro 12, 2019 Denunciar Share Postado Fevereiro 12, 2019 Também dá pra resolver com case. Utilizando o exemplo do Dr. house : SELECT COALESCE(c.nome,'Total') as Categoria, COALESCE(s.nome,'Total') as SubCategoria , sum("valor") as Valores, ,sum(case when fl.mes = f.mes and fl.mes ilike 'janeiro' then valor else 0 end) as janeiro, ,sum(case when fl.mes = f.mes and fl.mes ilike 'fevereiro' then valor else 0 end) as fevereiro, ,sum(case when fl.mes = f.mes and fl.mes ilike 'marco' then valor else 0 end) as marco, ,sum(case when fl.mes = f.mes and fl.mes ilike 'abril' then valor else 0 end) as abril, ,sum(case when fl.mes = f.mes and fl.mes ilike 'maio' then valor else 0 end) as maio, ,sum(case when fl.mes = f.mes and fl.mes ilike 'junho' then valor else 0 end) as junho, ,sum(case when fl.mes = f.mes and fl.mes ilike 'julho' then valor else 0 end) as julho, ,sum(case when fl.mes = f.mes and fl.mes ilike 'agosto' then valor else 0 end) as agosto, ,sum(case when fl.mes = f.mes and fl.mes ilike 'setembro' then valor else 0 end) as setembro, ,sum(case when fl.mes = f.mes and fl.mes ilike 'outubro' then valor else 0 end) as outubro, ,sum(case when fl.mes = f.mes and fl.mes ilike 'novembro' then valor else 0 end) as novembro, ,sum(case when fl.mes = f.mes and fl.mes ilike 'dezembro' then valor else 0 end) as dezembro FROM public."fluxo" f inner join "categoria" c on c.id_cat = f.id_cat inner join "subcategoria" s on s.id_sub = f.id_sub group by rollup (c.nome,s.nome) order by c.nome, s.nome, Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 sidneycorreia Postado Abril 13, 2019 Denunciar Share Postado Abril 13, 2019 Oi meu caro, tudo bem? Há uma outra solução para isso, seria usando o CROSSTAB. Há um vídeo no meu canal onde explico em detalhes como usar esse recurso, https://www.youtube.com/watch?v=0DQsyoTKP7E. A forma que o colega Dr. House lhe sugeriu também abordo em https://www.youtube.com/watch?v=svJ9jorZZrI Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ma8926167
Boa tarde,
Preciso de uma ajuda para consultar, onde os meses ficasse em colunas.
Qual melhor maneira de fazer isso?
Aqui um exemplo: http://sqlfiddle.com/#!17/a1091/7/0
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.