none
Ajuda com uma consulta RRS feed

  • Pergunta

  • Amigos, estou com dificuldades para criar uma consulta com uma tabela, poderiam me ajudar.

    Tenho uma tabela chamada TABELA_TIMES, gostaria de fazer uma consulta para retornar uns valores consolidados e mais amigavel para visualizar.

    Achei que a melhor forma de explicar seria postando a imagem, na imagem coloquei a minha tabela e a consulta que to tentando.

    Desde já agradeço a ajuda.


    • Editado Starcker segunda-feira, 17 de março de 2014 16:44
    segunda-feira, 17 de março de 2014 16:37

Respostas

  • Estou sem ambiente para teste, mas acho que pode lhe ajudar:

    declare @time table (times varchar(max), ano int, mes int, repasse float)
    
    insert into @time values ('sao paulo', 2011,1,10)
    insert into @time values ('sao paulo', 2011,2,20)
    insert into @time values ('sao paulo', 2011,3,30)
    insert into @time values ('sao paulo', 2012,1,10)
    insert into @time values ('sao paulo', 2012,2,20)
    insert into @time values ('sao paulo', 2012,3,30)
    
    
    insert into @time values ('santos', 2011,1,10)
    insert into @time values ('santos', 2011,2,10)
    insert into @time values ('santos', 2011,3,10)
    insert into @time values ('santos', 2012,1,10)
    insert into @time values ('santos', 2012,2,10)
    insert into @time values ('santos', 2012,3,10)
    
    
    insert into @time values ('palmeiras', 2011,1,10)
    insert into @time values ('palmeiras', 2011,2,10)
    insert into @time values ('palmeiras', 2011,3,10)
    insert into @time values ('palmeiras', 2012,1,10)
    insert into @time values ('palmeiras', 2012,2,10)
    insert into @time values ('palmeiras', 2012,3,10)
    
    
    
    
    select times
    	, sum(jan) as jan
    	, sum(fev)as fev
    	, sum(mar)as mar
    	, sum(abr)as abr
    	, sum(mai)as mai
    	, sum(jun)as jun
    from (
    Select times
             , [1] as Jan
             , [2] as Fev
             , [3] as Mar
             , [4] as Abr
             , [5] as Mai
             , [6] as Jun
    from @time pivot (sum(repasse) for mes in ([1],[2],[3],[4], [5], [6])) p
    ) a
    group by times

    Caso não de certo, procure por PIVOT, que um dos agregadores dele vai lhe ajudar.

    []´s

    • Sugerido como Resposta Lucas_Santos segunda-feira, 17 de março de 2014 17:19
    • Marcado como Resposta Starcker segunda-feira, 17 de março de 2014 21:06
    segunda-feira, 17 de março de 2014 17:18

Todas as Respostas

  • Não veio imagem

    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 17 de março de 2014 16:39
  • Lucas Santos, upei a imagem.. 
    segunda-feira, 17 de março de 2014 16:45
  • SELECT Time, Repasse, Mes
    FROM TABELA_TIMES
    GROUP BY colunas_aqui
    WITH ROLLUP


    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 17 de março de 2014 16:52
  • Estou sem ambiente para teste, mas acho que pode lhe ajudar:

    declare @time table (times varchar(max), ano int, mes int, repasse float)
    
    insert into @time values ('sao paulo', 2011,1,10)
    insert into @time values ('sao paulo', 2011,2,20)
    insert into @time values ('sao paulo', 2011,3,30)
    insert into @time values ('sao paulo', 2012,1,10)
    insert into @time values ('sao paulo', 2012,2,20)
    insert into @time values ('sao paulo', 2012,3,30)
    
    
    insert into @time values ('santos', 2011,1,10)
    insert into @time values ('santos', 2011,2,10)
    insert into @time values ('santos', 2011,3,10)
    insert into @time values ('santos', 2012,1,10)
    insert into @time values ('santos', 2012,2,10)
    insert into @time values ('santos', 2012,3,10)
    
    
    insert into @time values ('palmeiras', 2011,1,10)
    insert into @time values ('palmeiras', 2011,2,10)
    insert into @time values ('palmeiras', 2011,3,10)
    insert into @time values ('palmeiras', 2012,1,10)
    insert into @time values ('palmeiras', 2012,2,10)
    insert into @time values ('palmeiras', 2012,3,10)
    
    
    
    
    select times
    	, sum(jan) as jan
    	, sum(fev)as fev
    	, sum(mar)as mar
    	, sum(abr)as abr
    	, sum(mai)as mai
    	, sum(jun)as jun
    from (
    Select times
             , [1] as Jan
             , [2] as Fev
             , [3] as Mar
             , [4] as Abr
             , [5] as Mai
             , [6] as Jun
    from @time pivot (sum(repasse) for mes in ([1],[2],[3],[4], [5], [6])) p
    ) a
    group by times

    Caso não de certo, procure por PIVOT, que um dos agregadores dele vai lhe ajudar.

    []´s

    • Sugerido como Resposta Lucas_Santos segunda-feira, 17 de março de 2014 17:19
    • Marcado como Resposta Starcker segunda-feira, 17 de março de 2014 21:06
    segunda-feira, 17 de março de 2014 17:18
  • Não entendi qual o problema com a query do Advaldo.

    Me parece correta, executei aqui, e pra mim está exatamente o que precisa.

    O que você vê que teria que mudar ?


    Se a sugestão resolver o problema, favor marcar como Resposta.

    segunda-feira, 17 de março de 2014 20:29
  • Lucas, tem razão, você falou e resolvi testar novamente, o problema foi ignorância minha que estava adaptando de forma errada.. Funcionou perfeitamente a solução do Advaldo.

    Advaldo muito obrigado!!

    segunda-feira, 17 de março de 2014 21:05
  • Obrigado Advaldo.! Funcionou perfeitamente.
    segunda-feira, 17 de março de 2014 21:06
  • Lucas, obrigado, se você não chamasse a atenção que estava certo ia continuar achando que não tinha dado certo!

    Obrigado, sou iniciante.. E ainda tenho muito que aprender, estou buscando conhecimento.

    Abraço!@

    segunda-feira, 17 de março de 2014 21:07
  • De nada senhores.

    Estamos aqui para agregar resultados.

    []´s e boa sorte

    terça-feira, 18 de março de 2014 12:47