Cara Mengubah Bentuk Tabel untuk Mengubah Baris Menjadi Kolom di MySQL

Cara 2: Menggunakan Fungsi Pivot

Cara lain untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom di MySQL adalah dengan menggunakan fungsi pivot. Fungsi pivot adalah fungsi yang memungkinkan kita untuk mengubah bentuk tabel dengan memutar data dari baris menjadi kolom atau sebaliknya. Fungsi pivot dapat digunakan untuk melakukan transposisi tabel dengan mudah dan cepat.

Namun, MySQL tidak memiliki fungsi pivot bawaan yang dapat kita gunakan secara langsung. Oleh karena itu, kita perlu menggunakan ekstensi atau plugin tertentu untuk menambahkan fungsi pivot ke MySQL. Salah satu ekstensi yang populer dan sering digunakan adalah Flexviews. Flexviews adalah ekstensi yang menyediakan fungsi pivot, unpivot, dan incremental refresh untuk MySQL. Flexviews dapat diunduh dan diinstal dari situs web resminya: https://github.com/greenlion/swanhart-tools/tree/master/flexviews

Untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom dengan menggunakan fungsi pivot, kita perlu melakukan langkah-langkah berikut:

  • Instal dan aktifkan ekstensi Flexviews di MySQL. Ikuti petunjuk instalasi yang diberikan di situs web resminya.
  • Buat sebuah tabel sementara yang berisi data yang ingin kita ubah bentuknya. Tabel sementara adalah tabel yang hanya ada selama sesi MySQL berlangsung dan akan dihapus secara otomatis saat sesi berakhir. Tabel sementara dapat dibuat dengan menggunakan perintah CREATE TEMPORARY TABLE. Misalnya, kita dapat membuat tabel sementara dengan nama sales_temp yang berisi data dari tabel sales_table dengan perintah berikut:
CREATE TEMPORARY TABLE sales_temp AS
SELECT * FROM sales_table;
  • Buat sebuah tampilan yang berisi definisi fungsi pivot yang ingin kita gunakan. Tampilan adalah objek basis data yang menyimpan hasil dari query SQL sebagai tabel virtual. Tampilan dapat dibuat dengan menggunakan perintah CREATE VIEW. Misalnya, kita dapat membuat tampilan dengan nama pivot_view yang berisi definisi fungsi pivot untuk mengubah bentuk tabel sales_temp dengan perintah berikut:
CREATE VIEW pivot_view AS
SELECT
  FV$Pivot(
    'sales_temp', -- nama tabel sementara yang berisi data
    'category', -- nama kolom yang akan menjadi baris baru
    'month', -- nama kolom yang akan menjadi kolom baru
    'sales', -- nama kolom yang berisi nilai yang akan dihitung
    'SUM', -- nama fungsi agregasi yang akan digunakan
    NULL -- nama kolom tambahan yang akan dimasukkan ke tabel hasil (opsional)
  ) AS pivot_result; -- nama alias untuk hasil fungsi pivot
  • Jalankan query SQL untuk memanggil fungsi pivot dari tampilan yang telah dibuat. Query SQL yang dapat kita gunakan adalah sebagai berikut:
SELECT * FROM pivot_view;

Query ini akan menghasilkan tabel hasil yang kita inginkan, seperti yang ditunjukkan di atas.

Cara 3: Menggunakan Fungsi Unpivot dan Pivot

Cara ketiga untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom di MySQL adalah dengan menggunakan fungsi unpivot dan pivot. Fungsi unpivot adalah fungsi yang kebalikan dari fungsi pivot, yaitu mengubah bentuk tabel dengan memutar data dari kolom menjadi baris. Fungsi unpivot dapat digunakan untuk melakukan transposisi tabel dengan cara yang lebih fleksibel dan dinamis.

Namun, MySQL juga tidak memiliki fungsi unpivot bawaan yang dapat kita gunakan secara langsung. Oleh karena itu, kita juga perlu menggunakan ekstensi atau plugin tertentu untuk menambahkan fungsi unpivot ke MySQL. Salah satu ekstensi yang populer dan sering digunakan adalah Flexviews yang telah kita bahas sebelumnya. Flexviews menyediakan fungsi unpivot selain fungsi pivot dan incremental refresh untuk MySQL.

Untuk mengubah bentuk tabel untuk mengubah baris menjadi kolom dengan menggunakan fungsi unpivot dan pivot, kita perlu melakukan langkah-langkah berikut:

  • Instal dan aktifkan ekstensi Flexviews di MySQL jika belum dilakukan sebelumnya. Ikuti petunjuk instalasi yang diberikan di situs web resminya
  • Buat sebuah tabel sementara yang berisi data yang ingin kita ubah bentuknya, jika belum ada sebelumnya. Tabel sementara dapat dibuat dengan menggunakan perintah CREATE TEMPORARY TABLE. Misalnya, kita dapat membuat tabel sementara dengan nama sales_temp yang berisi data dari tabel sales_table dengan perintah berikut:
CREATE TEMPORARY TABLE sales_temp AS
SELECT * FROM sales_table;
  • Buat sebuah tampilan yang berisi definisi fungsi unpivot yang ingin kita gunakan. Tampilan adalah objek basis data yang menyimpan hasil dari query SQL sebagai tabel virtual. Tampilan dapat dibuat dengan menggunakan perintah CREATE VIEW. Misalnya, kita dapat membuat tampilan dengan nama unpivot_view yang berisi definisi fungsi unpivot untuk mengubah bentuk tabel sales_temp dengan perintah berikut:
CREATE VIEW unpivot_view AS
SELECT
  FV$Unpivot(
    'sales_temp', -- nama tabel sementara yang berisi data
    'category', -- nama kolom yang akan tetap menjadi baris
    'month', -- nama kolom baru yang akan menyimpan nama kolom lama
    'sales', -- nama kolom baru yang akan menyimpan nilai kolom lama
    'month, sales' -- nama kolom lama yang akan diubah menjadi baris
  ) AS unpivot_result; -- nama alias untuk hasil fungsi unpivot
  • Buat sebuah tampilan lain yang berisi definisi fungsi pivot yang ingin kita gunakan. Tampilan dapat dibuat dengan menggunakan perintah CREATE VIEW. Misalnya, kita dapat membuat tampilan dengan nama pivot_view yang berisi definisi fungsi pivot untuk mengubah bentuk tabel unpivot_view dengan perintah berikut:
CREATE VIEW pivot_view AS
SELECT
  FV$Pivot(
    'unpivot_view', -- nama tampilan yang berisi data
    'category', -- nama kolom yang akan menjadi baris baru
    'month', -- nama kolom yang akan menjadi kolom baru
    'sales', -- nama kolom yang berisi nilai yang akan dihitung
    'SUM', -- nama fungsi agregasi yang akan digunakan
    NULL -- nama kolom tambahan yang akan dimasukkan ke tabel hasil (opsional)
  ) AS pivot_result; -- nama alias untuk hasil fungsi pivot
  • Jalankan query SQL untuk memanggil fungsi pivot dari tampilan yang telah dibuat. Query SQL yang dapat kita gunakan adalah sebagai berikut:
SELECT * FROM pivot_view;

Query ini akan menghasilkan tabel hasil yang kita inginkan, seperti yang ditunjukkan di atas.

Artikel Terbaru