logo

Pivot i Unpivot w SQL

W języku SQL Pivot i Unpivot to operatory relacyjne używane do przekształcania jednej tabeli w drugą w celu uzyskania prostszego widoku tabeli. Konwencjonalnie możemy tak powiedzieć Sworzeń operator konwertuje dane wierszy tabeli na dane kolumn. The Odwróć operator robi odwrotnie, czyli przekształca dane oparte na kolumnach w wiersze.

Składnia:

1. Obrót:



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

2. Odwróć:

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

Przykład 1:
Stworzyliśmy prostą tabelę o nazwie geeksforgeeks z wartościami takimi jak nazwa kursu, kategoria kursu i cena, a następnie wstawiliśmy odpowiednie wartości.

 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>

Dane wyjściowe, które otrzymujemy, to:

Nazwa kursu Kategoria kursu Cena
C PROGRAMOWANIE 5000
JAWA PROGRAMOWANIE 6000
PYTON PROGRAMOWANIE 8000
MIEJSCE 100 PRZYGOTOWANIE DO WYWIAD 5000

Teraz składanie wniosków SWORZEŃ operator do tych danych:

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

Po zastosowaniu operatora Pivot otrzymujemy następujący wynik:

Nazwa kursu PROGRAMOWANIE Przygotowanie do rozmowy kwalifikacyjnej
C 5000 ZERO
JAWA 6000 ZERO
MIEJSCE 100 ZERO 5000
PYTON 8000 ZERO

Przykład-2:
Teraz używamy tej samej tabeli, którą stworzyliśmy w powyższym przykładzie i zastosujemy operator Unpivot do naszej tabeli przestawnej.

Stosowanie UNPIVOT operator:

 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>

Po użyciu operatora Unpivot odzyskujemy oryginalną tabelę, ponieważ pomyślnie przekształciliśmy kolumny tabeli z powrotem w wiersze:

Nazwa kursu Kategoria kursu Cena
C PROGRAMOWANIE 5000
JAWA PROGRAMOWANIE 6000
MIEJSCE 100 PRZYGOTOWANIE DO WYWIAD 5000
PYTON PROGRAMOWANIE 8000