I SQL är Pivot och Unpivot relationsoperatorer som används för att omvandla en tabell till en annan för att få en enklare bild av tabellen. Konventionellt kan vi säga det Svänga operatorn konverterar raddata i tabellen till kolumndata. De Ta bort pivot operatorn gör motsatsen, det vill säga att den omvandlar kolumnbaserade data till rader.
Syntax:
1. Pivot:
SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>
2. Ta bort pivot:
SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>
Exempel-1:
Vi har skapat en enkel tabell med namnet geeksforgeeks med värden som Kursnamn, kurskategori och pris och infogat respektive värden.
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> Utgången vi får är:
| Kursnamn | Kurskategori | Pris |
|---|---|---|
| C | PROGRAMMERING | 5 000 |
| JAVA | PROGRAMMERING | 6000 |
| PYTONORM | PROGRAMMERING | 8000 |
| PLACERING 100 | INTERVJUFÖRBEREDELSE | 5 000 |
Nu ansöker SVÄNGA operatör till denna data:
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>
Efter att ha använt Pivot-operatorn får vi följande resultat:
| Kursnamn | PROGRAMMERING | Intervjuförberedelse |
|---|---|---|
| C | 5 000 | NULL |
| JAVA | 6000 | NULL |
| PLACERING 100 | NULL | 5 000 |
| PYTONORM | 8000 | NULL |
Exempel-2:
Nu använder vi samma tabellgeeksforgeeks som skapades i exemplet ovan och tillämpar Unpivot-operatorn på vår pivoterade tabell.
Ansö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>
Efter att ha använt Unpivot-operatorn får vi tillbaka vår ursprungliga tabell eftersom vi framgångsrikt har transformerat tabellens kolumner tillbaka till rader:
| Kursnamn | Kurskategori | Pris |
|---|---|---|
| C | PROGRAMMERING | 5 000 |
| JAVA | PROGRAMMERING | 6000 |
| PLACERING 100 | INTERVJUFÖRBEREDELSE | 5 000 |
| PYTONORM | PROGRAMMERING | 8000 |