MySQL adalah salah satu sistem manajemen basis data relasional yang paling populer di dunia. MySQL memungkinkan kita untuk menyimpan, mengelola, dan menganalisis data dalam bentuk tabel. Tabel terdiri dari baris dan kolom yang merepresentasikan entitas dan atribut data. Namun, terkadang kita perlu mengubah bentuk tabel untuk mengubah baris menjadi kolom atau sebaliknya. Hal ini disebut sebagai transposisi tabel.
Transposisi tabel dapat berguna untuk beberapa alasan, seperti:
- Mempermudah visualisasi dan pemahaman data
- Mengoptimalkan kinerja query dan indeks
- Menyesuaikan struktur data dengan kebutuhan bisnis atau aplikasi
- Melakukan operasi agregasi atau perhitungan pada data

Namun, MySQL tidak memiliki fungsi bawaan untuk melakukan transposisi tabel secara langsung. Oleh karena itu, kita perlu menggunakan teknik atau trik tertentu untuk mencapai tujuan ini. Dalam artikel ini, kita akan membahas beberapa cara untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom di MySQL, beserta contoh dan penjelasannya.
Cara 1: Menggunakan Fungsi Agregasi dan Klausa GROUP BY
Salah satu cara untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom di MySQL adalah dengan menggunakan fungsi agregasi dan klausa GROUP BY. Fungsi agregasi adalah fungsi yang mengambil sekumpulan nilai sebagai input dan mengembalikan satu nilai sebagai output. Beberapa fungsi agregasi yang umum digunakan di MySQL adalah:
- SUM(): Menghitung jumlah total dari sekumpulan nilai
- AVG(): Menghitung rata-rata dari sekumpulan nilai
- MIN(): Mengembalikan nilai terkecil dari sekumpulan nilai
- MAX(): Mengembalikan nilai terbesar dari sekumpulan nilai
- COUNT(): Menghitung jumlah nilai yang ada dalam sekumpulan nilai
Klausa GROUP BY adalah klausa yang digunakan untuk mengelompokkan baris yang memiliki nilai yang sama pada satu atau lebih kolom. Klausa GROUP BY biasanya digunakan bersama dengan fungsi agregasi untuk menghitung nilai agregat untuk setiap kelompok.
Untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom dengan menggunakan fungsi agregasi dan klausa GROUP BY, kita perlu melakukan langkah-langkah berikut:
- Tentukan kolom yang akan menjadi baris baru dalam tabel hasil. Kolom ini biasanya merupakan kolom yang memiliki nilai yang berbeda-beda dan tidak terlalu banyak. Misalnya, kolom tahun, bulan, kategori, jenis, dll.
- Tentukan kolom yang akan menjadi kolom baru dalam tabel hasil. Kolom ini biasanya merupakan kolom yang memiliki nilai yang sama atau terbatas untuk setiap baris. Misalnya, kolom nama, produk, merek, dll.
- Tentukan fungsi agregasi yang akan digunakan untuk menghitung nilai untuk setiap kombinasi baris dan kolom baru. Fungsi agregasi ini tergantung pada jenis data dan tujuan analisis kita. Misalnya, SUM(), AVG(), MIN(), MAX(), dll.
- Buat query SQL yang menggunakan fungsi agregasi dan klausa GROUP BY untuk menghasilkan tabel hasil yang diinginkan.
Mari kita lihat contoh untuk memahami cara ini lebih baik. Misalkan kita memiliki tabel berikut yang menyimpan data penjualan produk untuk setiap bulan dan kategori:
month | category | sales |
Jan | A | 100 |
Jan | B | 200 |
Jan | C | 300 |
Feb | A | 150 |
Feb | B | 250 |
Feb | C | 350 |
Mar | A | 200 |
Mar | B | 300 |
Mar | C | 400 |
Tabel ini memiliki tiga kolom: month, category, dan sales. Kita ingin mengubah bentuk tabel ini untuk mengubah baris menjadi kolom, sehingga kita dapat melihat total penjualan untuk setiap kategori dan bulan dalam satu tabel. Tabel hasil yang kita inginkan adalah sebagai berikut:
category | Jan | Feb | Mar |
A | 100 | 150 | 200 |
B | 200 | 250 | 300 |
C | 300 | 350 | 400 |
Untuk mencapai tujuan ini, kita dapat menggunakan cara 1 dengan langkah-langkah berikut:
- Tentukan kolom yang akan menjadi baris baru dalam tabel hasil. Dalam kasus ini, kolom category akan menjadi baris baru, karena memiliki nilai yang berbeda-beda dan tidak terlalu banyak (A, B, C).
- Tentukan kolom yang akan menjadi kolom baru dalam tabel hasil. Dalam kasus ini, kolom month akan menjadi kolom baru, karena memiliki nilai yang sama atau terbatas untuk setiap baris (Jan, Feb, Mar).
- Tentukan fungsi agregasi yang akan digunakan untuk menghitung nilai untuk setiap kombinasi baris dan kolom baru. Dalam kasus ini, kita akan menggunakan fungsi SUM() untuk menghitung total penjualan untuk setiap kategori dan bulan.
- Buat query SQL yang menggunakan fungsi agregasi dan klausa GROUP BY untuk menghasilkan tabel hasil yang diinginkan. Query SQL yang dapat kita gunakan adalah sebagai berikut:
SELECT category, SUM(CASE WHEN month = 'Jan' THEN sales ELSE 0 END) AS Jan, SUM(CASE WHEN month = 'Feb' THEN sales ELSE 0 END) AS Feb, SUM(CASE WHEN month = 'Mar' THEN sales ELSE 0 END) AS Mar FROM sales_table GROUP BY category;
Query ini melakukan hal-hal berikut:
- Memilih kolom category dari tabel sales_table
- Menggunakan fungsi SUM() dan CASE untuk menghitung total penjualan untuk setiap kategori dan bulan. CASE adalah pernyataan bersyarat yang mengembalikan nilai berdasarkan kondisi yang diberikan. Dalam query ini, kita menggunakan CASE untuk memeriksa nilai bulan dan mengembalikan nilai penjualan jika sesuai, atau 0 jika tidak. Misalnya, SUM(CASE WHEN month = ‘Jan’ THEN sales ELSE 0 END) akan mengembalikan total penjualan untuk bulan Januari untuk setiap kategori, atau 0 jika tidak ada penjualan untuk bulan tersebut.
- Memberi nama alias untuk setiap kolom baru dengan menggunakan AS. Alias adalah nama alternatif yang dapat kita berikan untuk kolom atau tabel untuk mempermudah penulisan dan pembacaan query. Dalam query ini, kita memberi nama alias untuk setiap kolom baru dengan nama bulan yang sesuai, seperti Jan, Feb, Mar.
- Menggunakan klausa GROUP BY untuk mengelompokkan baris berdasarkan kolom category. Klausa GROUP BY akan membuat satu baris untuk setiap nilai unik pada kolom category, dan menghitung nilai agregat untuk setiap kolom lainnya.
Query ini akan menghasilkan tabel hasil yang kita inginkan, seperti yang ditunjukkan di atas.