"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 transpor dados no SQL Server usando o operador PIVOT?

Como transpor dados no SQL Server usando o operador PIVOT?

Publicado em 23/12/2024
Navegar:543

How to Transpose Data in SQL Server Using the PIVOT Operator?

Como transpor dados do SQL Server usando PIVOT

O operador PIVOT no SQL Server permite converter linhas em colunas, transformando dados de um forma orientada verticalmente para uma forma orientada horizontalmente. Isso pode ser útil ao tentar resumir dados com base em vários atributos.

Dados de exemplo e resultados desejados

Considere o seguinte conjunto de dados inicial:

SELECT Name1, Name2, Value FROM mytable

Name1 | Name2 | Value
------- ------- ------
A      | P1     | 1
A      | P2     | 1
A      | P3     | 2
B      | P1     | 3
B      | P2     | 1
B      | P4     | 1

A saída desejada é dinamizar os dados para que o operador PIVOT converta os valores da coluna Nome1 em cabeçalhos de coluna e os valores da coluna Valor sejam resumidos pela coluna Nome2.

Transpondo dados com PIVOT no SQL Server 2005

Para SQL Server 2005, o operador PIVOT pode ser usado no seguinte maneira:

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ','   QuoteName([Name1])
                        FROM myTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       IN ('   @cols   ')) AS finalpivot'

EXECUTE ( @sqlquery )

Esta consulta gera dinamicamente uma consulta PIVOT com base nos valores distintos na coluna Name1, montando os cabeçalhos das colunas e resumindo os dados de acordo. Em última análise, o resultado são os dados transpostos no formato desejado:

P1      P2      P3      P4
------- ------- ------- -------
1       1       2       NULL
3       1       NULL    1
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