Tabel Pivot memudahkan Anda menganalisis data dan mendapatkan tren yang bermanfaat. Namun, Anda mungkin perlu mengotomatiskan kueri tabel pivot untuk sering menggunakannya. Karena MySQL tidak memiliki fungsi untuk membuat tabel pivot, Anda perlu menulis kueri SQL untuk mengotomatiskan tabel pivot di MySQL. Jadi mari kita lihat cara mengotomatiskan kueri tabel pivot di MySQL
Cara Mengotomatiskan Kueri Tabel Pivot di MySQL
Berikut adalah langkah-langkah untuk mengotomatiskan kueri tabel pivot di MySQL. Katakanlah Anda memiliki tabel berikut
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 | +------+------------+------------+-------------+
Katakanlah Anda ingin memutar tabel dengan ujian kolom sehingga membuat 1 baris untuk setiap meeting_id dan 1 kolom untuk setiap field_key, seperti yang ditunjukkan di bawah ini.
+------------+-------------+-------------+-------------+ | Meeting_id | first_name | last_name | occupation | +------------+-------------+-------------+-------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+-------------+-------------+-------------+
Otomatiskan Kueri Tabel Pivot
Jika sudah mengetahui jumlah kolom yang akan dibuat, Anda dapat membuat kueri tabel pivot menggunakan pernyataan CASE untuk membuat tabel pivot.
Namun, sering kali Anda tidak mengetahui kolom yang perlu Anda buat di tabel pivot. Dalam kasus seperti itu, Anda dapat membuat tabel pivot secara dinamis menggunakan kueri berikut.
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;
Dalam pernyataan di atas, GROUP_CONCAT memungkinkan Anda untuk menggabungkan nilai field_key dari beberapa baris menjadi string tunggal. Dalam kueri di atas, kami menggunakan GROUP_CONCAT untuk membuat pernyataan CASE secara dinamis, berdasarkan nilai unik di kolom field_key dan menyimpannya dalam variabel @sql, yang kemudian digunakan untuk membuat kueri pemilihan kami. Jadi ini membantu Anda mengotomatiskan kueri tabel pivot di MySQL
+------------+------------+-----------+------------+ | Meeting_id | first_name | last_name | occupation | +------------+------------+-----------+------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+------------+-----------+------------+
Sekarang setelah Anda mengetahui cara mengotomatiskan kueri tabel pivot di MySQL, Anda dapat menyesuaikannya sesuai kebutuhan Anda dengan menambahkan klausa WHERE atau GABUNG.
Jika Anda ingin pivot hanya memilih nilai baris sebagai kolom, Anda dapat menambahkan klausa WHERE dalam pernyataan GROUP_CONCAT pilihan pertama Anda.
SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when field_key = ''', field_key, ''' then field_value end) ', field_key ) ) INTO @sql FROM Meeting WHERE <condition>;
Jika Anda ingin memfilter baris dalam tabel pivot akhir, Anda dapat menambahkan klausa WHERE dalam pernyataan SET.
SET @sql = CONCAT('SELECT Meeting_id, ', @sql, ' FROM Meeting WHERE <condition> GROUP BY Meeting_id');
Demikian pula, Anda juga dapat menerapkan GABUNG dalam kueri SQL saat Anda mentranspos baris ke kolom secara dinamis di MySQL.
Anda dapat mengotomatiskan kueri tabel pivot menggunakan alat pelaporan. Berikut adalah contoh tabel pivot otomatis yang dibuat menggunakan Ubiq.
Tahukah Anda bahwa Anda dapat membuat tabel pivot di Ubiq hanya dengan drag &drop?
Jika Anda ingin membuat tabel pivot, grafik, dasbor &laporan dari database MySQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.