logo

Pivot und Unpivot in SQL

In SQL sind Pivot und Unpivot relationale Operatoren, die verwendet werden, um eine Tabelle in eine andere umzuwandeln, um eine einfachere Tabellenansicht zu erhalten. Konventionell können wir das sagen Drehpunkt Der Operator wandelt die Zeilendaten der Tabelle in die Spaltendaten um. Der Pivot aufheben Der Operator bewirkt das Gegenteil, nämlich die Umwandlung der spaltenbasierten Daten in Zeilen.

Syntax:

1. Drehpunkt:



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

2. Pivot aufheben:

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

Beispiel 1:
Wir haben eine einfache Tabelle namens geeksforgeeks mit Werten wie Kursname, Kurskategorie und Preis erstellt und die entsprechenden Werte eingefügt.

 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>

Die Ausgabe, die wir erhalten, ist:

Kursname Kurskategorie Preis
C PROGRAMMIERUNG 5000
JAVA PROGRAMMIERUNG 6000
PYTHON PROGRAMMIERUNG 8000
PLATZIERUNG 100 INTERVIEWVORBEREITUNG 5000

Jetzt bewerbe ich mich PIVOT Betreiber zu diesen Daten:

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

Nach Verwendung des Pivot-Operators erhalten wir das folgende Ergebnis:

Kursname PROGRAMMIERUNG Interviewvorbereitung
C 5000 NULL
JAVA 6000 NULL
PLATZIERUNG 100 NULL 5000
PYTHON 8000 NULL

Beispiel-2:
Jetzt verwenden wir dieselbe Tabelle „geeksforgeeks“, die im obigen Beispiel erstellt wurde, und wenden den Unpivot-Operator auf unsere Pivot-Tabelle an.

Bewirbt sich UNPIVOT Operator:

 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>

Nach der Verwendung des Unpivot-Operators erhalten wir unsere ursprüngliche Tabelle zurück, da wir die Spalten der Tabelle erfolgreich wieder in Zeilen umgewandelt haben:

Kursname Kurskategorie Preis
C PROGRAMMIERUNG 5000
JAVA PROGRAMMIERUNG 6000
PLATZIERUNG 100 INTERVIEWVORBEREITUNG 5000
PYTHON PROGRAMMIERUNG 8000