V SQL sta Pivot in Unpivot relacijska operaterja, ki se uporabljata za pretvorbo ene tabele v drugo, da bi dosegli enostavnejši pogled na tabelo. Konvencionalno lahko tako rečemo Vrtenje operater pretvori podatke vrstic tabele v podatke stolpcev. The Prekliči vrtenje Operator naredi nasprotno, to je, da podatke, ki temeljijo na stolpcu, pretvori v vrstice.
Sintaksa:
1. Vrtenje:
SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>
2. Prekliči vrtenje:
SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>
Primer-1:
Ustvarili smo preprosto tabelo z imenom geeksforgeeks z vrednostmi, kot so ime tečaja, kategorija tečaja in cena, ter vstavili ustrezne vrednosti.
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> Rezultat, ki ga dobimo, je:
| Ime tečaja | CourseCategory | Cena |
|---|---|---|
| C | PROGRAMIRANJE | 5000 |
| JAVA | PROGRAMIRANJE | 6000 |
| PYTHON | PROGRAMIRANJE | 8000 |
| NAMESTITEV 100 | PRIPRAVA NA RAZGOVOR | 5000 |
Zdaj prijava PIVOT operater na te podatke:
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>
Po uporabi operaterja Pivot dobimo naslednji rezultat:
| Ime tečaja | PROGRAMIRANJE | Priprava na intervju |
|---|---|---|
| C | 5000 | NIČ |
| JAVA | 6000 | NIČ |
| NAMESTITEV 100 | NIČ | 5000 |
| PYTHON | 8000 | NIČ |
Primer-2:
Zdaj uporabimo isto tabelo geeksforgeeks, ustvarjeno v zgornjem primeru, in uporabimo operater Unpivot za našo vrtljivo tabelo.
Prijavljanje UNPIVOT operater:
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 uporabi operaterja Unpivot dobimo nazaj prvotno tabelo, saj smo uspešno preoblikovali stolpce tabele nazaj v vrstice:
| Ime tečaja | CourseCategory | Cena |
|---|---|---|
| C | PROGRAMIRANJE | 5000 |
| JAVA | PROGRAMIRANJE | 6000 |
| NAMESTITEV 100 | PRIPRAVA NA RAZGOVOR | 5000 |
| PYTHON | PROGRAMIRANJE | 8000 |