none
Transformar Linha em Coluna RRS feed

  • Pergunta

  • Boa Tarde, tenho uma view que me traz os seguintes registros
    SELECT     TOP (100) PERCENT YEAR(DATA_FATURAMENTO) AS ANO, MONTH(DATA_FATURAMENTO) AS MES, NOME_PROFISSIONAL, COD_PROCEDIMENTO,
                          SUM(QUANTIDADE) AS TOTAL
    FROM         dbo.FATURAMENTO_LANCAMENTOS
    GROUP BY YEAR(DATA_FATURAMENTO), MONTH(DATA_FATURAMENTO), NOME_PROFISSIONAL, COD_PROCEDIMENTO
    ORDER BY ANO, MES, NOME_PROFISSIONAL, COD_PROCEDIMENTO

    resultado:

    NOME_PROFISSIONAL         PROCEDIMENTO           TOTAL        MES        ANO
    DIOGO                               0301010064                     30           7          2009
    DIOGO                               0301010064                     20           8          2009
    FERNANDO                          0301010064                     6            7          2009

    FERNANDO                          0301010064                     6            8          2009

    GABRIEL                             0301010064                     10           9          2009

    GABRIEL                            0301010064                       6            7          2009

     

    Preciso que os meses saia em coluna

    NOME          MES 7    MES 8
    DIOGO           30         7
    FERNANDO      6           8

    GABRIEL         6         

     

     

    OBS..: Nao posso usar pivot table e tem q trazer listar todos os profissionais da view

    • Movido Gustavo Maia Aguiar sexta-feira, 21 de maio de 2010 19:11 (De:SQL Server - Desenvolvimento Geral)
    sexta-feira, 21 de maio de 2010 17:18

Respostas

  • Diogo, então segue mais um exemplo.

    SELECT
      x.Nome_Profissional,
      MES_7 = SUM(CASE x.MES WHEN 7 THEN x.TOTAL ELSE 0 END),
      MES_8 = SUM(CASE x.MES WHEN 8 THEN x.TOTAL ELSE 0 END),
      MES_9 = SUM(CASE x.MES WHEN 9 THEN x.TOTAL ELSE 0 END)
    FROM
    (
      SELECT 
        YEAR(DATA_FATURAMENTO) AS ANO, 
        MONTH(DATA_FATURAMENTO) AS MES, 
        NOME_PROFISSIONAL , 
        COD_PROCEDIMENTO , 
        SUM(QUANTIDADE)     AS TOTAL
      FROM     
        dbo.FATURAMENTO_LANCAMENTOS
      GROUP BY 
        YEAR(DATA_FATURAMENTO), MONTH(DATA_FATURAMENTO), NOME_PROFISSIONAL, COD_PROCEDIMENTO
    ) AS x
    ORDER BY 
      x.Nome_Profissional
    

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    • Marcado como Resposta Diogo Munarin sexta-feira, 21 de maio de 2010 20:04
    sexta-feira, 21 de maio de 2010 19:07

Todas as Respostas

  • Diogo boa tarde,  nesse caso eu te recomendo utilizar um pivot dinâmico,

    no link abaixo postei um exemplo.

     

    http://social.msdn.microsoft.com/Forums/pt-BR/520/thread/ed0cfa0b-2719-4965-a4da-e426f04ffb74


    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    sexta-feira, 21 de maio de 2010 18:40
  • Cara nao me ajuda, nao posso usar declare nem nada do tipo, senao nao consigo jogar no relatorio, meu gerador de relatorio le somente instrucoes sql ou views
    sexta-feira, 21 de maio de 2010 18:48
  • Diogo, então segue mais um exemplo.

    SELECT
      x.Nome_Profissional,
      MES_7 = SUM(CASE x.MES WHEN 7 THEN x.TOTAL ELSE 0 END),
      MES_8 = SUM(CASE x.MES WHEN 8 THEN x.TOTAL ELSE 0 END),
      MES_9 = SUM(CASE x.MES WHEN 9 THEN x.TOTAL ELSE 0 END)
    FROM
    (
      SELECT 
        YEAR(DATA_FATURAMENTO) AS ANO, 
        MONTH(DATA_FATURAMENTO) AS MES, 
        NOME_PROFISSIONAL , 
        COD_PROCEDIMENTO , 
        SUM(QUANTIDADE)     AS TOTAL
      FROM     
        dbo.FATURAMENTO_LANCAMENTOS
      GROUP BY 
        YEAR(DATA_FATURAMENTO), MONTH(DATA_FATURAMENTO), NOME_PROFISSIONAL, COD_PROCEDIMENTO
    ) AS x
    ORDER BY 
      x.Nome_Profissional
    

    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    • Marcado como Resposta Diogo Munarin sexta-feira, 21 de maio de 2010 20:04
    sexta-feira, 21 de maio de 2010 19:07
  • Leonardo funcionou perfeitamente, marcarei como resposta, Muito Obrigado.

    sexta-feira, 21 de maio de 2010 20:03
  • Diogo valeu pelo retorno.
    Se a minha ajuda lhe for útil não esqueça de classificar. Att. Leonardo Marcelino
    sexta-feira, 21 de maio de 2010 20:58