Terkadang Anda perlu mengubah posisi kolom menjadi baris, atau menghapus tabel di MySQL. Karena MySQL tidak memiliki fungsi untuk UNPIVOT atau REVERSE PIVOT tabel, Anda perlu menulis kueri SQL untuk mengubah kolom menjadi baris. Berikut cara unpivot tabel di MySQL.
Cara Menghapus Pivot Tabel di MySQL
Katakanlah Anda memiliki tabel pivot berikut
mysql>create table data(id int, a varchar(255), b varchar(255), c varchar(255)); mysql>insert into data(id,a,b,c) values(1,'a1','b1','c1'),(2,'a1','b1','c1'); mysql>select * from data; +------+------+------+------+ | id | a | b | c | +------+------+------+------+ | 1 | a1 | b1 | c1 | | 2 | a1 | b1 | c1 | +------+------+------+------+
Katakanlah Anda ingin unpivot tabel di MySQL menjadi berikut ini.
1 | a1 | a 1 | b1 | b 1 | c1 | c 2 | a2 | a 2 | b2 | b 2 | c2 | c
Bonus Baca : Cara Membuat Tabel Pivot Dinamis di MySQL
Unpivot Tabel di MySQL
Inilah kueri untuk melakukan unpivot di SQL. Karena MySQL tidak menawarkan fungsi UNPIVOT, Anda perlu menggunakan klausa UNION ALL untuk membalikkan pivot tabel di MySQL.
mysql> select id, 'a' col, a value from data union all select id, 'b' col, b value from data union all select id, 'c' col, c value from data; +------+-----+-------+ | id | col | value | +------+-----+-------+ | 1 | a | a1 | | 2 | a | a1 | | 1 | b | b1 | | 2 | b | b1 | | 1 | c | c1 | | 2 | c | c1 | +------+-----+-------+
Dalam kueri di atas, pada dasarnya kami memotong tabel asli menjadi 3 yang lebih kecil – satu untuk setiap kolom a,b,c dan kemudian menambahkannya satu di bawah yang lain menggunakan UNION ALL.
Jika Anda ingin memfilter baris, Anda dapat menambahkan klausa WHERE seperti yang ditunjukkan di bawah ini
mysql> select id, 'a' col, a value from data WHERE condition union all select id, 'b' col, b value from data WHERE condition union all select id, 'c' col, c value from data WHERE condition;
Bonus baca: Cara Transpose Baris ke Kolom Secara Dinamis di MySQL
Sayangnya, ini membosankan tetapi salah satu dari hanya 2 cara unpivot di MySQL. Yang lainnya melibatkan melakukan gabungan silang, seperti yang ditunjukkan di bawah ini.
mysql> select t.id, c.col, case c.col when 'a' then a when 'b' then b when 'c' then c end as data from data t cross join ( select 'a' as col union all select 'b' union all select 'c' ) c; +------+-----+------+ | id | col | data | +------+-----+------+ | 1 | a | a1 | | 2 | a | a1 | | 1 | b | b1 | | 2 | b | b1 | | 1 | c | c1 | | 2 | c | c1 | +------+-----+------+
Bonus Baca :Cara Mengotomatiskan Query Pivot Table di MySQL
Anda dapat menyesuaikan kueri di atas ke tabel unpivot di MySQL, menggunakan klausa WHERE. Anda juga dapat menggunakan alat pelaporan untuk memplot hasil dalam tabel. Berikut adalah contoh tabel yang dibuat menggunakan Ubiq.
Jika Anda ingin membuat tabel pivot, grafik &dasbor dari database MySQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.