I SQL er Pivot og Unpivot relationelle operatorer, der bruges til at transformere en tabel til en anden for at opnå en mere enkel visning af tabellen. Konventionelt kan vi sige det Omdrejningspunkt operatoren konverterer rækkedataene i tabellen til kolonnedataene. Det Fjern pivot operatoren gør det modsatte, nemlig at den transformerer de kolonnebaserede data til rækker.
Syntaks:
1. Pivot:
SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>
2. Fjern pivot:
SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>
Eksempel-1:
Vi har lavet en simpel tabel ved navn geeksforgeeks med værdier som Kursusnavn, kursuskategori og pris og indsat de respektive værdier.
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> Det output vi får er:
| Kursusnavn | Kursuskategori | Pris |
|---|---|---|
| C | PROGRAMMERING | 5000 |
| JAVA | PROGRAMMERING | 6000 |
| PYTHON | PROGRAMMERING | 8000 |
| PLACERING 100 | FORBEREDELSE AF INTERVIEW | 5000 |
Nu ansøger OMDREJNINGSPUNKT operatør til disse data:
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>
Efter brug af Pivot-operator får vi følgende resultat:
| Kursusnavn | PROGRAMMERING | Interviewforberedelse |
|---|---|---|
| C | 5000 | NUL |
| JAVA | 6000 | NUL |
| PLACERING 100 | NUL | 5000 |
| PYTHON | 8000 | NUL |
Eksempel-2:
Nu bruger vi de samme tabel-nørder, der er oprettet i ovenstående eksempel, og anvender Unpivot-operatoren på vores pivoterede tabel.
Ansøger UNPIVOT operatør:
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>
Efter at have brugt Unpivot-operatoren får vi vores oprindelige tabel tilbage, da vi med succes har transformeret tabellens kolonner tilbage til rækker:
| Kursusnavn | Kursuskategori | Pris |
|---|---|---|
| C | PROGRAMMERING | 5000 |
| JAVA | PROGRAMMERING | 6000 |
| PLACERING 100 | FORBEREDELSE AF INTERVIEW | 5000 |
| PYTHON | PROGRAMMERING | 8000 |