Ir para conteúdo
Fórum Script Brasil
  • 0

Meses em Coluna


ma8926167

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0
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        |

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

  • 0
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 por Dr. House
Link para o comentário
Compartilhar em outros sites

  • 0

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,

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...