Verwenden von PIVOT und UNPIVOT - SQL Server | Microsoft Docs Weiter zum Hauptinhalt Dieser Browser wird nicht mehr unterstützt. Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen. Artikel 05/17/2022 5 Minuten Lesedauer Ist diese Seite hilfreich? Haben Sie weiteres Feedback für uns? Feedback wird an Microsoft gesendet: Wenn Sie auf die Sendeschaltfläche klicken, wird Ihr Feedback verwendet, um Microsoft-Produkte und -Dienste zu verbessern. Sql pivot dynamische spalten 2018. Datenschutzrichtlinie Vielen Dank. In diesem Artikel Gilt für: SQL Server (alle unterstützen Versionen) Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Verwenden Sie die relationalen Operatoren PIVOT und UNPIVOT, um einen Tabellenwertausdruck in einer andere Tabelle zu ändern. Mit dem PIVOT -Operator wird ein Tabellenwertausdruck rotiert, indem die eindeutigen Werte einer Spalte im Ausdruck in mehrere Spalten in der Ausgabe aufgeteilt werden.
Dennoch ist dieser Schritt notwendig, um die gewünschte Reduktion auf eine Zeile pro Jahr zu erreichen. Der nächste Schritt ist, zwölf Spalten zu definieren, die jeweils nur die Verkaufserlöse eines Monates aufsummieren. Um zum Beispiel den Umsatz für Jänner zu ermitteln, soll der Ausdruck sum(revenue) nur noch die Einträge aus Jänner berücksichtigen. Dafür bietet der SQL-Standard die filter -Klausel: sum(revenue) FILTER (WHERE EXTRACT(MONTH FROM invoice_date) = 1) Die filter -Klausel beschränkt die aggregierten Zeilen auf jene, die die Bedingung in der Klammer erfüllen. In diesem Beispiel auf die Rechnungen aus Jänner. Wertespalten in Power Query: So legen Sie mehrere an. Die Umsätze der anderen Monate können natürlich analog ermittelt werden. Um die Abfrage übersichtlicher zu gestalten, kann man die extract -Ausdrücke natürlich zentralisieren. Dafür könnte man zum Beispiel generierte Spalten oder einen View verwenden, wenn andere Abfragen dieselben extract -Ausdrücke benötigen. Für dieses Beispiel soll es genügen, die extract -Ausdrücke innerhalb der Abfrage zu zentralisieren – entweder mit der with -Klausel oder als Unterabfrage: SELECT year, SUM(revenue) FILTER (WHERE month = 1) jan_revenue, SUM(revenue) FILTER (WHERE month = 2) feb_revenue..., SUM(revenue) FILTER (WHERE month = 12) dec_revenue FROM (SELECT invoices.
Daten drehen – English " pivot" – ist eine sehr häufige Problemstellung, die in verschiedenen Varianten auftritt. Der Kern der Anforderung ist jeweils, dass Daten die in verschiedenen Zeilen eine Tabelle gespeichert sind, als Spalten einer Zeile dargestellt werden sollen. Diese Anforderung tritt bei der Erstellung von Berichten besonders häufig auf. Die folgenden Ausführungen basieren daher auf einer Abfrage, die monatliche Verkaufserlöse ausgibt: SELECT EXTRACT(YEAR FROM invoice_date) year, EXTRACT(MONTH FROM invoice_date) month, SUM(revenue) revenue FROM invoices GROUP BY EXTRACT(YEAR FROM invoice_date), EXTRACT(MONTH FROM invoice_date) Diese Abfrage liefert die Daten rein vertikal – also einen Wert pro Zeile. Dynamisches Pivot von Zeilen in Spalten | Datenbank-Forum. Oft ist jedoch eine andere Darstellung gewünscht: zum Beispiel nur eine Zeile pro Jahr, dafür eine eigene Spalte für jeden Monat. Anders gesagt sollen die Zeilen eines Jahres in Spalten gewandelt werden. Der erste Schritt zur Umsetzung dieser Anforderung ist, das Monat aus den group by und select -Klauseln zu entfernen, damit das Ergebnis nur noch eine Zeile pro Jahr enthält: SELECT EXTRACT(YEAR FROM invoice_date) year, SUM(revenue) total_revenue GROUP BY EXTRACT(YEAR FROM invoice_date) Natürlich liefert diese Abfrage keine monatliche Aufschlüsselung mehr.
Oracle und Microsoft bieten in ihren kommerziellen Datenbanksystemen mit PIVOT und UNPIVOT komfortable Operatoren an. Postgres unterstützt nur das Pivotieren mit der crosstab-Funktion. DB2 und MySQL fehlen diese Operatoren und Funktionen. UNPIVOT Mit einem UNPIVOT lassen sich Spalten in Zeilen transponieren. Breite Datenbanktabellen, mit vielen Spalten, können so in eine Key-Value-ähnliche Struktur überführt werden, wie nachfolgendes Beispiel zeigt. Sql pivot dynamische spalten data. Dort werden die Kundenumsatzdaten aus Tabelle 1 in ein Data-Warehouse integriert. Das UNPIVOT aus Listing 1 liefert eine flache Datenstruktur, die mit der Tabelle 2 FAKT_KUNDEN_UMSATZ übereinstimmt und eine einfache Integration, z. B. über ein INSERT, ermöglicht. PIVOT Ebenso gut ist es möglich, mit dem PIVOT in Listing 2, Zeilen in Spalten zu transponieren. Die FAKT_KUNDEN_UMSATZ aus Tabelle 2 könnte somit in die Datenstruktur der KUNDEN_UMSATZ_QUELLE überführt werden. Die PIVOT Funktion berechnet vor dem Transponieren eine Aggregation durch implizite Gruppierung aller Spalten, die nicht aggregiert werden.
Nicht immer sind die Spalten fest definiert, nach denen man eine Tabelle pivotieren möchte. Falls die Spalten auch erst nach Anwendung anderer Kriterien feststehen, hilft nur noch dynamisches SQL um das passende Statement zur Laufzeit zu erzeugen. Es gibt eine Tabelle (Artikel) mit Material aus verschiedenen Werkstoffen in verschiedenen Größen, welches von verschiedenen Herstellern bezogen wird. Ebenfalls in der Tabelle ist die aktuelle Lagermenge (in Stück) verzeichnet. Sql pivot dynamische spalten de. Bei der Abfrage der Artikel sollen nur gewisse Hersteller berücksichtigt werden. Als Ergebnis soll eine Matrix ausgegeben werden, die zu jedem Werkstoff die Lagermenge für die verschiedenen Größen angibt. Die Matrix soll in der vertikalen Richtung nach Werkstoff sortiert sein und in der horizontalen Ausrichtung nach den Größen. Hier sehen wir die Einschränkung auf die Hersteller als Ursache für die nicht bekannten Spalten. Die Größen der Materialien für die Matrix können erst dann bestimmt werden, wenn die Artikel über die Hersteller gefiltert werden.
zurück zur Blogübersicht Diese Beiträge könnten Sie ebenfalls interessieren Keinen Beitrag verpassen – viadee Blog abonnieren