Pivottabeller gör det enkelt att analysera din data och få användbara trender. Du kan dock behöva automatisera pivottabellsfrågor för att kunna använda dem ofta. Eftersom MySQL inte har en funktion för att skapa pivottabeller måste du skriva SQL-fråga för att automatisera pivottabeller i MySQL. Så låt oss titta på hur man automatiserar pivottabellsfrågor i MySQL
Hur man automatiserar pivottabellsfrågor i MySQL
Här är stegen för att automatisera pivottabellsfrågor i MySQL. Låt oss säga att du har följande tabell
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 | +------+------------+------------+-------------+
Låt oss säga att du vill pivotera tabellen genom examen kolumn för att skapa en rad för varje mötes-id och en kolumn för varje fältnyckel, som visas nedan.
+------------+-------------+-------------+-------------+ | Meeting_id | first_name | last_name | occupation | +------------+-------------+-------------+-------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+-------------+-------------+-------------+
Automatisera pivottabellsfrågor
Om du redan vet hur många kolumner som ska skapas kan du skapa pivottabellfrågor med CASE-satsen för att skapa en pivottabell.
Men många gånger vet du inte vilka kolumner du behöver skapa i pivottabeller. I sådana fall kan du skapa pivottabeller dynamiskt med hjälp av följande fråga.
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;
I ovanstående uttalanden låter GROUP_CONCAT dig sammanfoga field_key-värden från flera rader till en enda sträng. I ovanstående fråga använder vi GROUP_CONCAT för att dynamiskt skapa CASE-satser, baserat på de unika värdena i field_key-kolumnen och lagra i @sql-variabeln, som sedan används för att skapa vår urvalsfråga. Så det hjälper dig att automatisera pivottabellsfrågor i MySQL
+------------+------------+-----------+------------+ | Meeting_id | first_name | last_name | occupation | +------------+------------+-----------+------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+------------+-----------+------------+
Nu när du vet hur man automatiserar pivottabellsfrågor i MySQL kan du anpassa dem enligt dina krav genom att lägga till WHERE-klausul eller JOINS.
Om du bara vill pivotera valda radvärden som kolumner, kan du lägga till WHERE-satsen i din första select GROUP_CONCAT-sats.
SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when field_key = ''', field_key, ''' then field_value end) ', field_key ) ) INTO @sql FROM Meeting WHERE <condition>;
Om du vill filtrera rader i din sista pivottabell kan du lägga till WHERE-satsen i din SET-sats.
SET @sql = CONCAT('SELECT Meeting_id, ', @sql, ' FROM Meeting WHERE <condition> GROUP BY Meeting_id');
På samma sätt kan du också använda JOINS i din SQL-fråga medan du överför rader till kolumner dynamiskt i MySQL.
Du kan automatisera pivottabellsfrågor med ett rapportverktyg. Här är ett exempel på en automatisk pivottabell skapad med Ubiq.
Visste du att du kan skapa pivottabeller i Ubiq genom att bara dra och släppa?
Om du vill skapa pivottabeller, diagram, instrumentpaneler och rapporter från MySQL-databasen kan du prova Ubiq. Vi erbjuder en 14-dagars gratis provperiod.