logo

Draaien en terugdraaien in SQL

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