Jumat, 18 Agustus 2017

Membuat PIVOT tabel dengan MySQL

Berasa bandung bondowoso! Saking penasarannya saya membuat tabel pivot di mysql, akhirnya semalaman saya kerjakan tantangan ini. Jadi ceritanya, di suatu malam yang dingin seorang teman datang kepada saya untuk membuat suatu revisi program. Cuma ditambah bikin laporan sih, but,  ketika saya lihat programnya ternyata ada yang beda. Lalu usut menyusut saya cari asal usul datanya hingga terlihat demikian ini :


Banyak juga ya datanya, hehe, tapi pada intinya. Saya diminta untuk mengeluarkan data pokoknya saja seperti ini :

Jadi, untuk mendapatkan format ini cukup panjang perjalanan saya bersama google. Yah, memang jarang utak atik query di mySQL. Mulai dari pakai group, case when, concat dan lain sebagainya, sampai saya menemukan if(MAX) dari tutorial di buysql (terima kasih Tuhan, sudah mempertemukan aku dengannya!) Jadi, seperti di gambar di atas dan ini scriptnya. Semoga bermanfaat!


SELECT  a.nik, a.nama_alternatif,
MAX(if(nama_kriteria = 'Kedisiplinan', bobot_normalisasi, NULL)) as Kedisiplinan,
MAX(if(nama_kriteria = 'Kejujuran', bobot_normalisasi, NULL)) as Kejujuran,
MAX(if(nama_kriteria = 'Inisiatif', bobot_normalisasi, NULL)) as Inisiatif,
MAX(if(nama_kriteria = 'Komunikasi', bobot_normalisasi, NULL)) as Komunikasi,
MAX(if(nama_kriteria = 'Kerjasama', bobot_normalisasi, NULL)) as Kerjasama,
hasil_alternatif, now() as tgl_simpan
FROM alternatif a, kriteria b, rangking c where a.id_alternatif=c.id_alternatif and b.id_kriteria=c.id_kriteria group by a.id_alternatif