SQL Server: PIVOT-Klausel


Beispiel

Die PIVOT-Klausel kann in SQL Server (Transact-SQL) verwendet werden.

Schauen wir uns das an Ein Beispiel: Wenn wir eine Mitarbeitertabelle hätten, die die folgenden Daten enthält:

Mitarbeiternummer Nachname Vorname Gehalt dept_id
12009 Sutherland Barbara 54000 45
34974 Yates Fred 80000 45
34987 Erickson Neil 42000 45
45001 Parker Sally 57500 30
75623 Gates Steve 65000 30

Und wir haben die folgende SQL-Anweisung ausgeführt, die eine Kreuztabelle erstellt bei Abfrage mit der PIVOT-Klausel:

Es würde das folgende Ergebnis zurückgegeben:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

In diesem Beispiel wird eine Pivot-Tabelle erstellt, in der das Gesamtgehalt für dept_id 30 und dept_id 45 angezeigt wird. Die Ergebnisse werden in einer Zeile angezeigt, wobei die beiden Abteilungen angezeigt werden jeweils in einer eigenen Spalte.

Lassen Sie uns nun die PIVOT-Klausel auseinander brechen und erklären, wie sie funktioniert.

Geben Sie Spalten in Kreuztabellenergebnissen an

Zunächst möchten wir angeben, welche Felder in unsere Kreuztabellenergebnisse aufgenommen werden sollen. In diesem Beispiel möchten wir den Literalwert „TotalSalary“ als erste Spalte in die Pivot-Tabelle aufnehmen. Und wir möchten eine Spalte für dept_id 30 und eine zweite Spalte für dept_id 45 erstellen. Dies gibt uns 3 Spalten in unserer Pivot-Tabelle.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Geben Sie die Quelle an Tabellendaten

Als Nächstes müssen wir eine SELECT-Anweisung angeben, die die Quelldaten für die Pivot-Tabelle zurückgibt.

In diesem Beispiel möchten wir die Werte für dept_id und Gehalt von zurückgeben Die Mitarbeitertabelle:

(SELECT dept_id, salary FROM employees) AS SourceTable

Sie müssen einen Alias für die Quellabfrage angeben. In diesem Beispiel haben wir die Abfrage als SourceTable aliasisiert.

Aggregatfunktion angeben

Als Nächstes müssen Sie angeben, welche Aggregatfunktion beim Erstellen unserer Kreuztabellenabfrage verwendet werden soll. Sie können jedes Aggregat wie SUM-, COUNT-, MIN-, MAX- oder AVG-Funktionen verwenden.

In diesem Beispiel verwenden wir die SUMME-Funktion. Dies summiert die Gehaltswerte:

PIVOT(SUM(salary)

Pivot-Werte angeben

Schließlich müssen wir angeben, welche Pivot-Werte in unsere Ergebnisse aufgenommen werden sollen . Diese werden als Spaltenüberschriften in unserer Kreuztabellenabfrage verwendet.

In diesem Beispiel werden nur die dept_id-Werte 30 und 45 zurückgegeben. Diese Werte werden zu unseren Spaltenüberschriften in unserem Pivot Tabelle. Beachten Sie außerdem, dass diese Werte eine endliche Liste der dept_id-Werte sind und nicht unbedingt alle möglichen Werte enthalten.

FOR dept_id IN (, )

Wenn wir nun alles zusammenfügen, Wir erhalten die folgende Pivot-Tabelle:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.