SQL:ssä Pivot ja Unpivot ovat relaatiooperaattoreita, joita käytetään taulukon muuntamiseen toiseksi yksinkertaisemman taulukon näyttämiseksi. Perinteisesti voimme sanoa niin Pivot operaattori muuntaa taulukon rivitiedot saraketiedoiksi. The Unpivot operaattori tekee päinvastoin eli se muuttaa sarakepohjaiset tiedot riveiksi.
Syntaksi:
1. Pivot:
SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>
2. Unpivot:
SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>
Esimerkki-1:
Olemme luoneet yksinkertaisen taulukon nimeltä geeksforgeeks, jossa on arvot, kuten kurssin nimi, kurssin luokka ja hinta, ja lisäsimme vastaavat arvot.
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> Saamamme tulos on:
| Kurssin nimi | Kurssiluokka | Hinta |
|---|---|---|
| C | OHJELMOINTI | 5000 |
| JAVA | OHJELMOINTI | 6000 |
| PYTHON | OHJELMOINTI | 8000 |
| SIJOITUS 100 | HAASTATTELUN VALMISTELU | 5000 |
Nyt hakemus PIVOT operaattori näihin tietoihin:
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>
Pivot-operaattorin käytön jälkeen saamme seuraavan tuloksen:
| Kurssin nimi | OHJELMOINTI | Haastattelun valmistelu |
|---|---|---|
| C | 5000 | TYHJÄ |
| JAVA | 6000 | TYHJÄ |
| SIJOITUS 100 | TYHJÄ | 5000 |
| PYTHON | 8000 | TYHJÄ |
Esimerkki-2:
Nyt käytämme samaa taulukkoa geeksforgeeks, joka on luotu yllä olevassa esimerkissä, ja käytämme Unpivot-operaattoria Pivoted-taulukkoomme.
Hakeminen UNIPIVOT operaattori:
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>
Unpivot-operaattorin käytön jälkeen saamme takaisin alkuperäisen taulukon, koska olemme onnistuneesti muuntaneet taulukon sarakkeet takaisin riveiksi:
| Kurssin nimi | Kurssiluokka | Hinta |
|---|---|---|
| C | OHJELMOINTI | 5000 |
| JAVA | OHJELMOINTI | 6000 |
| SIJOITUS 100 | HAASTATTELUN VALMISTELU | 5000 |
| PYTHON | OHJELMOINTI | 8000 |