So ändern Sie die Tabellenform, um Zeilen in Spalten in MySQL umzuwandeln

Weg 2: Verwenden der Pivot-Funktion

Eine weitere Möglichkeit, die Form einer Tabelle zu ändern, um Zeilen in Spalten in MySQL umzuwandeln, ist die Verwendung der pivot-Funktion. Die Pivot-Funktion ist eine Funktion, mit der wir die Form einer Tabelle ändern können, indem wir Daten von Zeilen in Spalten oder umgekehrt drehen. Mit der Pivot-Funktion können Tabellen einfach und schnell transponiert werden.

MySQL hat jedoch keine eingebaute Pivot-Funktion, die wir direkt verwenden können. Daher müssen wir bestimmte Erweiterungen oder Plugins verwenden, um Pivot-Funktionen zu MySQL hinzuzufügen. Eine der beliebtesten und am häufigsten verwendeten Erweiterungen ist Flexviews. Flexviews ist eine Erweiterung, die Pivot-, Unpivot- und inkrementelle Aktualisierungsfunktionen für MySQL bereitstellt. Flexviews kann von der offiziellen Website heruntergeladen und installiert werden: https://github.com/greenlion/swanhart-tools/tree/master/flexviews

Um die Form einer Tabelle zu ändern, um Zeilen mithilfe der Pivot-Funktion in Spalten umzuwandeln, müssen wir die folgenden Schritte ausführen:

  • Installieren und aktivieren Sie die Flexviews-Erweiterung in MySQL. Befolgen Sie die Installationsanweisungen auf der offiziellen Website.
  • Erstellen Sie eine temporäre Tabelle, die die Daten enthält, die wir formen möchten. Temporäre Tabellen sind Tabellen, die nur während einer MySQL-Sitzung existieren und nach Beendigung der Sitzung automatisch gelöscht werden. Temporäre Tabellen können mit dem Befehl CREATE TEMPORARY TABLE erstellt werden. Mit dem folgenden Befehl können wir beispielsweise eine temporäre Tabelle mit dem Namen sales_temp erstellen, die Daten aus der sales_table Tabelle enthält:
CREATE TEMPORARY TABLE sales_temp AS
SELECT * FROM sales_table;
  • Erstellen Sie eine Ansicht, die die Definition der Pivotfunktion enthält, die wir verwenden möchten. Eine View ist ein Datenbankobjekt, das die Ergebnisse einer SQL-Abfrage als virtuelle Tabelle speichert. Ansichten können mit dem Befehl CREATE VIEW erstellt werden. Zum Beispiel können wir eine Ansicht mit dem Namen pivot_view erstellen, die die Definition der Pivot-Funktion enthält, um die Form der sales_temp Tabelle mit dem folgenden Befehl zu ändern:
CREATE VIEW pivot_view AS
SELECT
FV$Pivot(
'sales_temp', -- der Name der temporären Tabelle, die die Daten enthält
'category', -- der Name der Spalte, die die neue Zeile sein wird
'month', -- der Name der Spalte, die zur neuen Spalte wird
'sales', -- der Name der Spalte, die den zu berechnenden Wert enthält
'SUM', -- der Name der zu verwendenden Aggregationsfunktion
NULL -- zusätzliche Spaltennamen, die in die Ergebnistabelle aufgenommen werden sollen (optional)
) AS pivot_result; -- Aliasname für das Ergebnis der Pivot-Funktion
  • Führen Sie eine SQL-Abfrage aus, um die Pivotfunktion der erstellten Ansicht aufzurufen. Die SQL-Abfragen, die wir verwenden können, sind wie folgt:
SELECT * FROM pivot_view;

Diese Abfrage generiert die gewünschte Ergebnistabelle, wie oben gezeigt.

Möglichkeit 3: Verwenden der Funktionen “Unpivot” und “Pivot”

Die dritte Möglichkeit, die Form einer Tabelle zu ändern, um Zeilen in Spalten in MySQL zu konvertieren, ist die Verwendung der Funktionen unpivot und pivot. Die Unpivot-Funktion ist die entgegengesetzte Funktion der Pivot-Funktion, die die Form der Tabelle ändert, indem Daten aus Spalten in Zeilen gedreht werden. Mit der Unpivot-Funktion können Tabellen flexibler und dynamischer transponiert werden.

MySQL hat jedoch auch keine eingebaute Unpivot-Funktion, die wir direkt verwenden können. Daher müssen wir auch bestimmte Erweiterungen oder Plugins verwenden, um MySQL eine Unpivot-Funktionalität hinzuzufügen. Eine der beliebtesten und häufig verwendeten Erweiterungen ist die Flexviews, die wir bereits besprochen haben. Flexviews bietet zusätzlich zu den Pivot- und inkrementellen Aktualisierungsfunktionen für MySQL eine Unpivot-Funktion.

Um die Tabellenform so zu ändern, dass Zeilen mithilfe der Funktionen unpivot und pivot in Spalten konvertiert werden, müssen wir die folgenden Schritte ausführen:

  • Installieren und aktivieren Sie die Flexviews-Erweiterung in MySQL, falls dies noch nicht geschehen ist. Befolgen Sie die Installationsanweisungen auf der offiziellen Website
  • Erstellen Sie eine temporäre Tabelle, die die Daten enthält, die wir formen möchten, falls sie noch nicht vorhanden waren. Temporäre Tabellen können mit dem Befehl CREATE TEMPORARY TABLE erstellt werden. Mit dem folgenden Befehl können wir beispielsweise eine temporäre Tabelle mit dem Namen sales_temp erstellen, die Daten aus der sales_table Tabelle enthält:
CREATE TEMPORARY TABLE sales_temp AS
SELECT * FROM sales_table;
  • Erstellen Sie eine Ansicht, die die Definition der Unpivot-Funktion enthält, die wir verwenden möchten. Eine View ist ein Datenbankobjekt, das die Ergebnisse einer SQL-Abfrage als virtuelle Tabelle speichert. Ansichten können mit dem Befehl CREATE VIEW erstellt werden. Zum Beispiel können wir eine Ansicht mit dem Namen unpivot_view erstellen, die eine Unpivot-Funktionsdefinition enthält, um die Form einer sales_temp Tabelle mit dem folgenden Befehl zu ändern:
CREATE VIEW unpivot_view AS
SELECT
FV$Unpivot(
'sales_temp', -- der Name der temporären Tabelle, die die Daten enthält
'category', -- der Name der Spalte, die in der Zeile verbleibt
'month', -- der Name der neuen Spalte, in der der alte Spaltenname gespeichert wird
'sales', -- der Name der neuen Spalte, in der die alten Spaltenwerte gespeichert werden
'month, sales' -- der Name der alten Spalte, die in eine Zeile umgewandelt werden soll
) AS unpivot_result; -- Aliasname für die Ergebnisse der Unpivot-Funktion
  • Erstellen Sie eine weitere Ansicht, die die Definition der Pivotfunktion enthält, die wir verwenden möchten. Ansichten können mit dem Befehl CREATE VIEW erstellt werden. Zum Beispiel können wir eine Ansicht mit dem Namen pivot_view erstellen, der die Definition der Pivot-Funktion enthält, um die Form der unpivot_view Tabelle mit dem folgenden Befehl zu ändern:
CREATE VIEW pivot_view AS
SELECT
FV$Pivot(
'unpivot_view', -- der Anzeigename, der die Daten enthält
'category', -- der Name der Spalte, die die neue Zeile sein wird
'month', -- der Name der Spalte, die zur neuen Spalte wird
'sales', -- der Name der Spalte, die den zu berechnenden Wert enthält
'SUM', -- der Name der zu verwendenden Aggregationsfunktion
NULL -- zusätzliche Spaltennamen, die in die Ergebnistabelle aufgenommen werden sollen (optional)
) AS pivot_result; -- Aliasname für das Ergebnis der Pivot-Funktion
  • Führen Sie eine SQL-Abfrage aus, um die Pivotfunktion der erstellten Ansicht aufzurufen. Die SQL-Abfragen, die wir verwenden können, sind wie folgt:
SELECT * FROM pivot_view;

Diese Abfrage generiert die gewünschte Ergebnistabelle, wie oben gezeigt.

Neueste Artikel