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.