UNPIVOT & PIVOT

Datenanalyse ist so viel mehr als das bloße Sammeln und Speichern von Informationen. Oft liegt die wahre Magie in der Art und Weise, wie wir diese Daten präsentieren und analysieren. Hier kommt der SQL-Befehl UNPIVOT ins Spiel.

Was ist UNPIVOT?

Data Warehouse

Data Warehouse Blueprints: Business Intelligence in der Praxis

Data Warehouse Blueprints: Business Intelligence...

Preis: 42,00 €

Prime

Jetzt auf Amazon kaufen
Datenarchitekturen: Modern Data Warehouse, Data Fabric, Data Lakehouse und Data Mesh richtig einsetzen

Datenarchitekturen: Modern Data Warehouse, Data...

Preis: 39,90 €

Prime

Jetzt auf Amazon kaufen
Data-Warehouse-Systeme für Dummies

Data-Warehouse-Systeme für Dummies

Preis: 26,99 €

Prime

Jetzt auf Amazon kaufen
The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling, 3rd Edition

The Data Warehouse Toolkit: The...

Preis: 56,71 €

Prime

Jetzt auf Amazon kaufen
Deciphering Data Architectures: Choosing Between a Modern Data Warehouse, Data Fabric, Data Lakehouse, and Data Mesh

Deciphering Data Architectures: Choosing Between...

Preis: 54,99 €

Prime

Jetzt auf Amazon kaufen
Building a Scalable Data Warehouse with Data Vault 2.0

Building a Scalable Data Warehouse...

Preis: 55,99 €

Prime

Jetzt auf Amazon kaufen
Fundamentals of Data Engineering: Plan and Build Robust Data Systems

Fundamentals of Data Engineering: Plan...

Preis: 62,81 €

Prime

Jetzt auf Amazon kaufen
Data Warehouse Technologien (mitp Professional)

Data Warehouse Technologien (mitp Professional)

Preis: 29,99 €

Prime

Jetzt auf Amazon kaufen
Agile Data Warehouse Design: Collaborative Dimensional Modeling, from Whiteboard to Star Schema

Agile Data Warehouse Design: Collaborative...

Preis: 31,01 €

Prime

Jetzt auf Amazon kaufen
Data Modeling with Microsoft Power BI: Self-Service and Enterprise Data Warehouse with Power BI

Data Modeling with Microsoft Power...

Preis: 48,99 €

Prime

Jetzt auf Amazon kaufen

Der UNPIVOT-Befehl in SQL ermöglicht es uns, mehrere Spalten einer Tabelle in Zeilen umzuwandeln. Stellen Sie sich das wie das Umkippen (oder Entfalten) einer Tabelle vor, wobei das, was einst in horizontalen Spalten dargestellt wurde, jetzt vertikal in Zeilen dargestellt wird.

Wozu dient UNPIVOT?

  1. Datenbereinigung und -vorbereitung: Oft erhalten wir Daten in einem „flachen“ Format, bei dem unterschiedliche Datenpunkte als separate Spalten dargestellt werden. UNPIVOT hilft, diese Daten in ein formatiertes, zeilenbasiertes Format zu transformieren, das für weitere Analysen oder Berichte besser geeignet ist.
  2. Verbesserte Datenvisualisierung: Manchmal kann das Umwandeln von Spalten in Zeilen die Datenvisualisierung in Tools wie Power BI oder Tableau erleichtern.
  3. Flexibilität: Durch das Entfalten von Daten können Sie flexiblere Abfragen erstellen und spezifische Aspekte Ihrer Daten einfacher isolieren und analysieren.

SQL: Handbuch für Einsteiger: Der leichte Weg zum SQL-Experten

SQL: Handbuch für Einsteiger: Der leichte Weg zum SQL-Experten
  • Marke: BMU Media GmbH
  • SQL: Handbuch für Einsteiger: Der leichte Weg zum SQL-Experten

Ein praktisches Beispiel

Nehmen wir an, wir haben eine Tabelle Sales, die den Umsatz eines Geschäfts für verschiedene Monate darstellt:

| Product | January | February | March |
|---------|---------|----------|-------|
| Apples  | 100     | 150      | 130   |
| Bananas | 80      | 85       | 90    |

Wenn wir diese Daten jedoch lieber zeilenweise für jeden Monat und jedes Produkt sehen möchten, können wir UNPIVOT verwenden:

SELECT Product, Month, Sales
FROM
(SELECT Product, January, February, March
FROM Sales) s
UNPIVOT
(Sales FOR Month IN
(January, February, March)
) AS unpvt;

Das Ergebnis wäre:

| Product | Month    | Sales |
|---------|----------|-------|
| Apples  | January  | 100   |
| Apples  | February | 150   |
| Apples  | March    | 130   |
| Bananas | January  | 80    |
| Bananas | February | 85    |
| Bananas | March    | 90    |

Mit UNPIVOT haben wir die monatlichen Umsatzspalten in einzelne Zeilen umgewandelt, was eine klarere Sicht auf die monatlichen Verkaufstrends für jedes Produkt ermöglicht.

Der UNPIVOT-Befehl ist ein mächtiges Werkzeug in Ihrem SQL-Arsenal. Ob Sie Daten für die Analyse vorbereiten, bessere Visualisierungen erstellen oder einfach flexiblere Abfragen gestalten möchten – mit UNPIVOT können Sie Ihre Daten in neue Perspektiven transformieren. Tauchen Sie ein und experimentieren Sie damit!

Geht UNPIVOT auch auf anderen relationalen Datenbanken wie Oracle?

Ja, das Konzept des „Unpivoting“ von Daten, also das Umwandeln von Spalten in Zeilen, ist in vielen relationalen Datenbankverwaltungssystemen (DBMS) vorhanden, wenn auch manchmal unter verschiedenen Syntaxen oder Mechanismen. Lassen Sie uns dies an weiteren vier DBMS durchgehen:

  1. MSSQL (Microsoft SQL Server):
    • Unterstützt direkt UNPIVOT.
    • Das Gegenstück dazu ist PIVOT, das Zeilen in Spalten umwandelt.
  2. Oracle:
    • Oracle hat keine eingebaute UNPIVOT-Funktion bis zur Version 10g. Ab Oracle 11g wurde jedoch die UNPIVOT-Syntax eingeführt, die ähnlich wie bei MSSQL funktioniert.
    • Das Gegenstück in Oracle ist ebenfalls PIVOT.
  3. IBM DB2:
    • IBM DB2 hat keine direkte UNPIVOT-Funktion. Das Unpivoting muss hier mit einer Kombination aus SQL-Funktionen erreicht werden, beispielsweise mit Hilfe von UNION ALL. Es ist etwas umständlicher als in MSSQL oder Oracle.
    • Ebenso gibt es keine direkte PIVOT-Funktion in DB2. Das Pivoting erfordert eine spezifische SQL-Abfragestruktur, oft unter Verwendung von Aggregatfunktionen.
  4. Teradata:
    • Teradata unterstützt ebenfalls kein eingebautes UNPIVOT. Ähnlich wie bei DB2 müssen Sie hier Standard-SQL-Funktionen und -Techniken verwenden, um das gewünschte Ergebnis zu erzielen.
    • Das Gegenstück, das Pivoting, erfordert ebenfalls spezielle SQL-Abfragen.

Während UNPIVOT (und sein Gegenstück PIVOT) in einigen Systemen eingebaut ist und eine recht direkte Syntax bietet, erfordern andere Systeme einen kreativeren Ansatz mit Standard-SQL-Techniken. Es ist wichtig, sich mit den spezifischen Möglichkeiten und Einschränkungen des jeweiligen DBMS vertraut zu machen, wenn man solche Transformationen durchführt.

Datenbankentwicklung lernen mit SQL Server 2022: Der praxisorientierte Grundkurs – auch für SQL Server Express

Datenbankentwicklung lernen mit SQL Server 2022: Der praxisorientierte Grundkurs – auch für SQL Server Express
Letzte Aktualisierung am 08.11.2024 um 15:54 Uhr / Affiliate Links / Bilder von der Amazon Product Advertising API

PIVOT Beispiele

PIVOT ist das genaue Gegenteil von UNPIVOT. Während UNPIVOT Spalten in Zeilen umwandelt, wandelt PIVOT Zeilen in Spalten um.

Lassen Sie uns das am Beispiel von SQL Server durchgehen, da er eine direkte Unterstützung für PIVOT bietet:

Ausgangssituation:

Angenommen, wir haben folgende Tabelle mit monatlichen Verkaufsdaten für verschiedene Produkte:

| Product | Month   | Sales |
|---------|---------|-------|
| Apples  | January | 100   |
| Apples  | February| 150   |
| Apples  | March   | 130   |
| Bananas | January | 80    |
| Bananas | February| 85    |
| Bananas | March   | 90    |

Nun möchten wir die Monate als Spalten und die Produkte als Zeilen darstellen:

Beispiel:

SELECT Product, [January], [February], [March]
FROM
(SELECT Product, Month, Sales
FROM SalesTable) s
PIVOT
(SUM(Sales)
FOR Month IN ([January], [February], [March])
) AS pvt;

Ergebnis:

| Product | January | February | March |
|---------|---------|----------|-------|
| Apples  | 100     | 150      | 130   |
| Bananas | 80      | 85       | 90    |

Die PIVOT-Operation hat die monatlichen Verkaufszahlen pro Produkt in einer zeilenbasierten Ansicht in eine spaltenbasierte Ansicht umgewandelt.

Für Oracle sieht die Syntax ähnlich aus, obwohl es Unterschiede in der genauen Implementierung gibt. Bei IBM DB2 und Teradata, wie bereits erwähnt, gibt es keine direkte PIVOT-Syntax, aber Sie können mit Aggregatfunktionen und bedingten Anweisungen (z.B. CASE) ähnliche Ergebnisse erzielen. Das erfordert mehr Code und möglicherweise auch mehr Überlegungen im Hinblick auf die Datenstruktur und den gewünschten Output.

Wie hat dir der Artikel gefallen?

Vielen Dank für dein Feedback!
Über Frank 83 Artikel

Ich bin Frank, Data Warehouse und BI-Entwickler mit langjähriger Expertise in diesem Bereich. Ich verfüge über mehr als 20 Jahre Berufserfahrung im DWH Umfeld. Das Analysieren und Interpretieren von Zahlen, Daten und Fakten ist meine große Leidenschaft, aus diesem Grunde ist auch diese Seite hier entstanden.

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*