"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como converter linhas em colunas no servidor SQL usando a função pivô?

Como converter linhas em colunas no servidor SQL usando a função pivô?

Postado em 2025-03-22
Navegar:721

How to Convert Rows to Columns in SQL Server Using the PIVOT Function?

converte linhas em colunas usando a função pivô no servidor SQL

pergunta

tabelas Pivot no SQL Server fornecem uma maneira poderosa de transpor dados de linhas para colunas. No entanto, os usuários podem enfrentar desafios ao criar a consulta correta.

solução

use a função Pivot para valores conhecidos da coluna:

Para valores predefinidos da coluna (neste caso o número de semanas), você pode usar a função pivô diretamente:

select *
from 
(
  select store, week, xCount
  from yt 
) src
pivot
(
  sum(xcount)
  for week in ([1], [2], [3])
) piv;

gerar dinamicamente os valores da coluna de perspectiva:

para lidar

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ','   QUOTENAME(Week) 
                    from yt
                    group by Week
                    order by Week
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT store,'   @cols   ' from 
             (
                select store, week, xCount
                from yt
            ) x
            pivot 
            (
                sum(xCount)
                for week in ('   @cols   ')
            ) p '

execute(@query);

resultado:

Ambos os métodos produzem o mesmo resultado:

| Loja | 1 | 2 | 3 |

| 101 | 138 | 282 | 220 |

| 102 | 96 | 212 | 123 |
| 105 | 37 | 78 | 60 |
| 109 | 59 | 97 | 87 |

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3