Operador UNPIVOT

O operador UNPIVOT é a operação inversa do operador **PIVOT**.

  • O PIVOT transforma valores de linhas em colunas.
  • O UNPIVOT faz o contrário, transforma colunas em linhas.

ATENÇÃO: O UNPIVOT não restaura os dados originais. Os dados originais foram perdidos durante o processo de agregação.


Sintaxe básica

SELECT [Coluna_1], [Coluna_2]
FROM (
	SELECT <lista_de_colunas>> FROM <Tabela_Pivoted>                                          
)
UNPIVOT ( <valor_da_coluna> FOR <nome_da_coluna> IN ( <<lista_de_colunas> ) )
<cláusula_opcional WHERE>
<cláusula_opcional ORDER BY>


Exemplo

Este exemple é a continua do exemplo referente ao PIVOT.

O UNPIVOT pode ser útil para normalizar dados que foram previamente pivotados ou para preparar dados para operações que requerem um formato de linha.

SELECT *
FROM 
(
  -- Consulta PIVOT
  SELECT *
	FROM
	(
		SELECT SalesPersonID, Year, TotalSales
		FROM #TempSales
	) AS SourceTable
	PIVOT
	(
		SUM(TotalSales)
		FOR Year IN ([2022], [2024])
	) AS PivotTable
) as Tabela_Pivot
UNPIVOT
(
  TotalSales
  FOR Year IN ([2022], [2024])
) as Tabela_UNPivot;




Documentação oficial da Microsoft