SQL valodā Pivot un Unpivot ir relāciju operatori, kurus izmanto, lai pārveidotu vienu tabulu citā, lai iegūtu vienkāršāku tabulas skatu. Tradicionāli mēs to varam teikt Rakurs operators pārvērš tabulas rindu datus kolonnas datos. The Atcelt operators rīkojas pretēji, tas ir, pārveido kolonnas datus rindās.
Sintakse:
1. Rakurss:
SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>
2. Atcelt:
SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>
1. piemērs:
Mēs esam izveidojuši vienkāršu tabulu ar nosaukumu geeksforgeeks ar tādām vērtībām kā Kursa nosaukums, kursa kategorija un cena un ievietojuši attiecīgās vērtības.
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> Izvade, ko mēs iegūstam, ir:
| Kursa nosaukums | Kursa kategorija | Cena |
|---|---|---|
| C | PROGRAMMĒŠANA | 5000 |
| JAVA | PROGRAMMĒŠANA | 6000 |
| PITONS | PROGRAMMĒŠANA | 8000 |
| VIETA 100 | INTERVIJAS SAGATAVOŠANA | 5000 |
Tagad pieteikšanās PIVOT operatoram šiem datiem:
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>
Pēc Pivot operatora izmantošanas mēs iegūstam šādu rezultātu:
| Kursa nosaukums | PROGRAMMĒŠANA | Intervijas sagatavošana |
|---|---|---|
| C | 5000 | NULL |
| JAVA | 6000 | NULL |
| VIETA 100 | NULL | 5000 |
| PITONS | 8000 | NULL |
2. piemērs:
Tagad mēs izmantojam to pašu tabulu geeksforgeeks, kas izveidota iepriekš minētajā piemērā, un savai Pivoted tabulai lietojam operatoru Unpivot.
Pieteikšanās UNPIVOT operators:
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>
Pēc Unpivot operatora izmantošanas mēs atgūstam sākotnējo tabulu, jo esam veiksmīgi pārveidojuši tabulas kolonnas atpakaļ uz rindām:
| Kursa nosaukums | Kursa kategorija | Cena |
|---|---|---|
| C | PROGRAMMĒŠANA | 5000 |
| JAVA | PROGRAMMĒŠANA | 6000 |
| VIETA 100 | INTERVIJAS SAGATAVOŠANA | 5000 |
| PITONS | PROGRAMMĒŠANA | 8000 |