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