I SQL er Pivot og Unpivot relasjonsoperatorer som brukes til å transformere en tabell til en annen for å oppnå enklere oversikt over tabellen. Konvensjonelt kan vi si det Dreie operatoren konverterer raddataene i tabellen til kolonnedataene. De Opphev pivot Operatøren gjør det motsatte, nemlig at den transformerer kolonnebaserte data til rader.
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 laget en enkel tabell kalt geeksforgeeks med verdier som Kursnavn, kurskategori og pris og satt inn de respektive verdiene.
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> Utgangen vi får er:
| Kursnavn | Kurskategori | Pris |
|---|---|---|
| C | PROGRAMMERING | 5000 |
| JAVA | PROGRAMMERING | 6000 |
| PYTHON | PROGRAMMERING | 8000 |
| PLASSERING 100 | INTERVJUFORBEREDELSE | 5000 |
Nå søker DREIE operatør til disse dataene:
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>
Etter å ha brukt Pivot-operator får vi følgende resultat:
| Kursnavn | PROGRAMMERING | Intervjuforberedelse |
|---|---|---|
| C | 5000 | NULL |
| JAVA | 6000 | NULL |
| PLASSERING 100 | NULL | 5000 |
| PYTHON | 8000 | NULL |
Eksempel-2:
Nå bruker vi de samme tabellgeeksforgeeksene som ble opprettet i eksemplet ovenfor og bruker Unpivot-operatoren på vår pivoterte tabell.
Søker 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>
Etter å ha brukt Unpivot-operatoren får vi den opprinnelige tabellen tilbake ettersom vi har transformert kolonnene i tabellen tilbake til rader:
| Kursnavn | Kurskategori | Pris |
|---|---|---|
| C | PROGRAMMERING | 5000 |
| JAVA | PROGRAMMERING | 6000 |
| PLASSERING 100 | INTERVJUFORBEREDELSE | 5000 |
| PYTHON | PROGRAMMERING | 8000 |