logo

Vrtenje in razvrščanje v SQL

V SQL sta Pivot in Unpivot relacijska operaterja, ki se uporabljata za pretvorbo ene tabele v drugo, da bi dosegli enostavnejši pogled na tabelo. Konvencionalno lahko tako rečemo Vrtenje operater pretvori podatke vrstic tabele v podatke stolpcev. The Prekliči vrtenje Operator naredi nasprotno, to je, da podatke, ki temeljijo na stolpcu, pretvori v vrstice.

Sintaksa:

1. Vrtenje:



 SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>

2. Prekliči vrtenje:

 SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>

Primer-1:
Ustvarili smo preprosto tabelo z imenom geeksforgeeks z vrednostmi, kot so ime tečaja, kategorija tečaja in cena, ter vstavili ustrezne vrednosti.

 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>

Rezultat, ki ga dobimo, je:

Ime tečaja CourseCategory Cena
C PROGRAMIRANJE 5000
JAVA PROGRAMIRANJE 6000
PYTHON PROGRAMIRANJE 8000
NAMESTITEV 100 PRIPRAVA NA RAZGOVOR 5000

Zdaj prijava PIVOT operater na te podatke:

 SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>

Po uporabi operaterja Pivot dobimo naslednji rezultat:

Ime tečaja PROGRAMIRANJE Priprava na intervju
C 5000 NIČ
JAVA 6000 NIČ
NAMESTITEV 100 NIČ 5000
PYTHON 8000 NIČ

Primer-2:
Zdaj uporabimo isto tabelo geeksforgeeks, ustvarjeno v zgornjem primeru, in uporabimo operater Unpivot za našo vrtljivo tabelo.

Prijavljanje UNPIVOT operater:

 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>

Po uporabi operaterja Unpivot dobimo nazaj prvotno tabelo, saj smo uspešno preoblikovali stolpce tabele nazaj v vrstice:

Ime tečaja CourseCategory Cena
C PROGRAMIRANJE 5000
JAVA PROGRAMIRANJE 6000
NAMESTITEV 100 PRIPRAVA NA RAZGOVOR 5000
PYTHON PROGRAMIRANJE 8000