Pivot-Tabellen machen es einfach, Ihre Daten zu analysieren und nützliche Trends zu erhalten. Möglicherweise müssen Sie Pivot-Tabellenabfragen jedoch automatisieren, um sie häufig zu verwenden. Da MySQL keine Funktion zum Erstellen von Pivot-Tabellen hat, müssen Sie eine SQL-Abfrage schreiben, um Pivot-Tabellen in MySQL zu automatisieren. Schauen wir uns also an, wie Pivot-Tabellenabfragen in MySQL automatisiert werden
Automatisieren von Pivot-Tabellenabfragen in MySQL
Hier sind die Schritte zum Automatisieren von Pivot-Tabellenabfragen in MySQL. Angenommen, Sie haben die folgende Tabelle
CREATE TABLE Meeting
(
ID INT,
Meeting_id INT,
field_key VARCHAR(100),
field_value VARCHAR(100)
);
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (1, 1,'first_name' , 'Alec');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (2, 1,'last_name' , 'Jones');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (3, 1,'occupation' , 'engineer');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (4,2,'first_name' , 'John');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (5,2,'last_name' , 'Doe');
INSERT INTO Meeting(ID,Meeting_id,field_key,field_value)
VALUES (6,2,'occupation' , 'engineer');
+------+------------+------------+-------------+
| ID | Meeting_id | field_key | field_value |
+------+------------+------------+-------------+
| 1 | 1 | first_name | Alec |
| 2 | 1 | last_name | Jones |
| 3 | 1 | occupation | engineer |
| 4 | 2 | first_name | John |
| 5 | 2 | last_name | Doe |
| 6 | 2 | occupation | engineer |
+------+------------+------------+-------------+
Angenommen, Sie möchten die Tabelle nach Prüfung pivotieren Spalte, um 1 Zeile für jede meeting_id und 1 Spalte für jeden field_key zu erstellen, wie unten gezeigt.
+------------+-------------+-------------+-------------+ | Meeting_id | first_name | last_name | occupation | +------------+-------------+-------------+-------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+-------------+-------------+-------------+
Pivot-Tabellenabfragen automatisieren
Wenn Sie die Anzahl der zu erstellenden Spalten bereits kennen, können Sie mit der CASE-Anweisung Pivot-Tabellenabfragen erstellen, um eine Pivot-Tabelle zu erstellen.
Oft wissen Sie jedoch nicht, welche Spalten Sie in Pivot-Tabellen erstellen müssen. In solchen Fällen können Sie mithilfe der folgenden Abfrage dynamisch Pivot-Tabellen erstellen.
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'max(case when exam = ''',
exam,
''' then field_value end) ',
field_key
)
) INTO @sql
FROM
Meeting;
SET @sql = CONCAT('SELECT Meeting_id, ', @sql, '
FROM Meeting
GROUP BY Meeting_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
In den obigen Anweisungen können Sie mit GROUP_CONCAT field_key-Werte aus mehreren Zeilen zu einer einzigen Zeichenfolge verketten. In der obigen Abfrage verwenden wir GROUP_CONCAT, um CASE-Anweisungen basierend auf den eindeutigen Werten in der Spalte field_key dynamisch zu erstellen und in der @sql-Variablen zu speichern, die dann zum Erstellen unserer Auswahlabfrage verwendet wird. So hilft es Ihnen, Pivot-Tabellenabfragen in MySQL zu automatisieren
+------------+------------+-----------+------------+ | Meeting_id | first_name | last_name | occupation | +------------+------------+-----------+------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+------------+-----------+------------+
Da Sie nun wissen, wie Pivot-Tabellenabfragen in MySQL automatisiert werden, können Sie sie gemäß Ihren Anforderungen anpassen, indem Sie WHERE-Klauseln oder JOINS hinzufügen.
Wenn Sie nur ausgewählte Zeilenwerte als Spalten pivotieren möchten, können Sie Ihrer ersten select GROUP_CONCAT-Anweisung eine WHERE-Klausel hinzufügen.
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'max(case when field_key = ''',
field_key,
''' then field_value end) ',
field_key
)
) INTO @sql
FROM
Meeting
WHERE <condition>;
Wenn Sie Zeilen in Ihrer endgültigen Pivot-Tabelle filtern möchten, können Sie die WHERE-Klausel in Ihre SET-Anweisung einfügen.
SET @sql = CONCAT('SELECT Meeting_id, ', @sql, '
FROM Meeting WHERE <condition>
GROUP BY Meeting_id');
In ähnlicher Weise können Sie auch JOINS in Ihrer SQL-Abfrage anwenden, während Sie in MySQL Zeilen dynamisch in Spalten transponieren.
Sie können Pivot-Tabellenabfragen mit einem Reporting-Tool automatisieren. Hier ist ein Beispiel für eine automatisierte Pivot-Tabelle, die mit Ubiq erstellt wurde.

Wussten Sie, dass Sie Pivot-Tabellen in Ubiq einfach per Drag &Drop erstellen können?
Wenn Sie Pivot-Tabellen, Diagramme, Dashboards und Berichte aus einer MySQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.