In SQL zijn Pivot en Unpivot relationele operatoren die worden gebruikt om de ene tabel in de andere te transformeren om een ​​eenvoudiger weergave van de tabel te verkrijgen. Conventioneel kunnen we dat zeggen Scharnier operator converteert de rijgegevens van de tabel naar de kolomgegevens. De Draaien ongedaan maken operator doet het tegenovergestelde, namelijk het transformeren van de op kolommen gebaseerde gegevens in rijen.
Syntaxis:
1. Draaien:
SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>
2. Draaien ongedaan maken:
SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>
Voorbeeld 1:
We hebben een eenvoudige tabel gemaakt met de naam geeksforgeeks met waarden als Cursusnaam, cursuscategorie en prijs en de respectieve waarden ingevoegd.
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> De uitvoer die we krijgen is:
| Cursus naam | CursusCategorie | Prijs |
|---|---|---|
| C | PROGRAMMEREN | 5000 |
| JAVA | PROGRAMMEREN | 6000 |
| PYTHON | PROGRAMMEREN | 8000 |
| PLAATSING 100 | INTERVIEWVOORBEREIDING | 5000 |
Nu solliciteren SCHARNIER exploitant van deze gegevens:
SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>
Na het gebruik van de Pivot-operator krijgen we het volgende resultaat:
| Cursus naam | PROGRAMMEREN | InterviewVoorbereiding |
|---|---|---|
| C | 5000 | NUL |
| JAVA | 6000 | NUL |
| PLAATSING 100 | NUL | 5000 |
| PYTHON | 8000 | NUL |
Voorbeeld-2:
Nu gebruiken we dezelfde tabel geeksforgeeks die in het bovenstaande voorbeeld is gemaakt en passen we de Unpivot-operator toe op onze draaitabel.
Toepassen ONTDRAAI exploitant:
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>
Na het gebruik van de Unpivot-operator krijgen we onze oorspronkelijke tabel terug, omdat we de kolommen van de tabel met succes terug naar rijen hebben getransformeerd:
| Cursus naam | CursusCategorie | Prijs |
|---|---|---|
| C | PROGRAMMEREN | 5000 |
| JAVA | PROGRAMMEREN | 6000 |
| PLAATSING 100 | INTERVIEWVOORBEREIDING | 5000 |
| PYTHON | PROGRAMMEREN | 8000 |