membuat pivot table di Postgre

Akhirnya punya kesempatan kembali untuk menulis. kali ini saya akan coba share bagaimana membuat sebuah pivot table dengan menggunakan Query di Postgre. Biasanya sih saya melakukan ini di Excel, namun bagaimana jika kita tidak memiliki aplikasi MS Excel nya ?

saat ini saya memiliki sebuah data yang berisi tentang profile jenis pipa, diameter pipa serta panjang nya. seperti tampak gambar dibawah ini :

Gambar 1.

kemudian muncul kebutuhan utk menampilkan data2 tersebut dalam bentuk seperti berikut :

gambar 2.

seperti dilihat pada gambar 1 diatas bahwa ada kolom diameter dan jenis pipa, namun di gambar 2 data nya menjadi kolom diameter yg sifatnya unik dan kolom jenis pipa menjadi kolom serta data panjang pipa adalah summary panjang pipa sesuai dengan kelompok jenis pipa dan diameternya.

Nah utk tujuan tersebut sejak postgre versi 8.3 telah di keluarkan extension yang namanya tablefunc ,

oleh sebab itu aktifkan dulu extension nya jika belum dengan cara mengeksekusi

CREATE extension tablefunc;

didalam extension ini tersedia pengelolaan fungsi table crosstab yang bisa digunakan untuk membuat pivot table sehingga kita dapat membuat pivotĀ  table dengan query berikut :

 SELECT *
 FROM crosstab('SELECT diameter, jenis, sum(panjang) as panjang
 FROM analisa.monitoring_pipa group by diameter, jenis order by diameter,jenis', 
'SELECT DISTINCT jenis FROM analisa.monitoring_pipa ORDER BY 1') 
final_result(
 diameter character varying(12), 
 "ACP" numeric(15,2), 
 "Galvanis" numeric(15,2), 
 "HDPE" numeric(15,2), 
 "PVC" numeric(15,2), 
 "Steel" numeric(15,2), 
 "UnKnown" numeric(15,2));

untuk mendapatkan nilai summary dari panjang pipa dengan cara melakukan summary pada field panjang yg kemudian di group by berdasarkan diameter dan jenis. kemudian sebagai result table yg diinginkan kita buat sebuah view dgn kolom-kolom yang sudah kita tentukan.

Demikian selamat mencoba dan semoga bermanfaat.

One thought on “membuat pivot table di Postgre

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.