Dynamisches Pivotieren in MySQL mithilfe vorbereiteter Anweisungen
MySQL verfügt nicht über eine native PIVOT-Funktion, aber Sie können sie mithilfe von Aggregatfunktionen und CASE-Anweisungen emulieren. Für dynamische Pivotdaten bieten vorbereitete Anweisungen eine effiziente Lösung.
Stellen Sie sich ein Szenario mit einer Tabelle mit Produktteilen vor:
CREATE TABLE Parts ( part_id INT, part_type VARCHAR(1), product_id INT ); INSERT INTO Parts (part_id, part_type, product_id) VALUES (1, 'A', 1), (2, 'B', 1), (3, 'A', 2), (4, 'B', 2), (5, 'A', 3), (6, 'B', 3);
Die gewünschte Ausgabe ist eine Pivottabelle, in der die Teile-IDs für jedes Produkt zusammengefasst sind Produkt:
product_id part_A_id part_B_id ---------- ---------- ---------- 1 1 2 2 3 4 3 5 6
Dynamisch geschwenkt Abfrage
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when part_type = ''', part_type, ''' then part_id end) AS part_', part_type, '_id' ) ) INTO @sql FROM Parts; SET @sql = CONCAT('SELECT product_id, ', @sql, ' FROM Parts GROUP BY product_id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
Statische Pivot-Abfrage (begrenzte Spalten)
Für eine statische Abfrage mit einer festen Anzahl von Pivot-Spalten:
SELECT product_id, max(CASE WHEN part_type = 'A' THEN part_id END) AS part_A_id, max(CASE WHEN part_type = 'B' THEN part_id END) AS part_B_id FROM Parts GROUP BY product_id;
Das obige ist der detaillierte Inhalt vonWie kann ich Daten in MySQL mithilfe vorbereiteter Anweisungen dynamisch Pivotieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!