Pivote y Unpivot en SQL

En SQL, Pivot y Unpivot son operadores relacionales que se utilizan para transformar una tabla en otra para lograr una vista más simple de la tabla. Convencionalmente, podemos decir que el operador Pivot convierte los datos de las filas de la tabla en los datos de la columna. El operador Unpivot hace lo contrario, es decir, transforma los datos basados ​​en columnas en filas.

Sintaxis:

1. Pivote:

SELECT (ColumnNames) 
FROM (TableName) 
PIVOT
 ( 
   AggregateFunction(ColumnToBeAggregated)
   FOR PivotColumn IN (PivotColumnValues)
 ) AS (Alias) //Alias is a temporary name for a table

2. Despivote:

SELECT (ColumnNames) 
FROM (TableName) 
UNPIVOT
 ( 
   AggregateFunction(ColumnToBeAggregated)
   FOR PivotColumn IN (PivotColumnValues)
 ) AS (Alias)

Ejemplo-1:
Hemos creado una tabla simple llamada «geeksforgeeks» con valores como Nombre del curso, categoría del curso y precio e insertamos los valores respectivos.

Create Table geeksforgeeks 
( 
CourseName nvarchar(50), 
CourseCategory nvarchar(50),
Price int  
) 

Insert into geeksforgeeks  values('C', 'PROGRAMMING', 5000) 
Insert into geeksforgeeks  values('JAVA', 'PROGRAMMING', 6000) 
Insert into geeksforgeeks  values('PYTHON', 'PROGRAMMING', 8000) 
Insert into geeksforgeeks  values('PLACEMENT 100', 'INTERVIEWPREPARATION', 5000) 

SELECT * FROM geeksforgeeks 

La salida que obtenemos es:

Nombre del curso CursoCategoría Precio
C PROGRAMACIÓN 5000
JAVA PROGRAMACIÓN 6000
PITÓN PROGRAMACIÓN 8000
COLOCACIÓN 100 PREPARACIÓN DE LA ENTREVISTA 5000

Ahora, aplicando el operador PIVOT a estos datos:

SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION
FROM geeksforgeeks 
PIVOT 
( 
SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) 
) AS PivotTable 

Después de usar el operador Pivot obtenemos el siguiente resultado:

Nombre del curso PROGRAMACIÓN EntrevistaPreparación
C 5000 NULO
JAVA 6000 NULO
COLOCACIÓN 100 NULO 5000
PITÓN 8000 NULO

Ejemplo-2:
Ahora, usamos la misma tabla «geeksforgeeks» creada en el ejemplo anterior y aplicamos el operador Unpivot a nuestra tabla Pivotada.

Aplicando el operador UNPIVOT :

SELECT CourseName, CourseCategory, Price 
FROM 
(
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks 
PIVOT 
( 
SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION) 
) AS PivotTable
) P 
UNPIVOT 
( 
Price FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION)
) 
AS UnpivotTable

Después de usar el operador Unpivot, recuperamos nuestra tabla original, ya que hemos transformado con éxito las columnas de la tabla en filas:

Nombre del curso CursoCategoría Precio
C PROGRAMACIÓN 5000
JAVA PROGRAMACIÓN 6000
COLOCACIÓN 100 PREPARACIÓN DE LA ENTREVISTA 5000
PITÓN PROGRAMACIÓN 8000

Publicación traducida automáticamente

Artículo escrito por Abhishek7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *