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 |