Pivot table di SQL dan ORACLE

Di Microsoft Excel terdapat fungsi untuk mengelompokkan data berdasarkan beberapa criteria tertentu, bagaimanakah jika data itu di database. Jangan khawatir kawan, di SQL maupun di Oracle terdapat fungsi yang bisa membalikkan baris menjadi sebuah kolom.

Disini saya mendapatkan kasus seperti di bawah ini: saya mempunyai table : Pegawai

tgl id_pegawai nilai
1
100
8
2
111
10
3
200
3
4
222
4
1
111
5
2
200
3
3
100
4
4
222
5



Saya ingin melihat nilai dari tgl yang tersedia, bagaimana Query nya???
Jika memakai MySQL syntax nya seperti  ini:

select a.tgl, sum( IF((a.id_pegawai = '100'), CAST( a.nilai as UNSIGNED), null) ) as pgw100
, sum( IF((a.id_pegawai = '111'), CAST( a.nilai as UNSIGNED), null) ) as pgw111
, sum( IF((a.id_pegawai = '200'), CAST( a.nilai as UNSIGNED), null) ) as pgw200
, sum( IF((a.id_pegawai = '222'), CAST( a.nilai as UNSIGNED), null) ) as pgw222
from(
select * from pegawai 
) a
group by a.tgl

untuk Query di Oracle:
select tgl, sum(decode(id_pegawai,100,nilai,0)) as pgw100,sum(decode(id_pegawai,111,nilai,0)) as pgw111,sum(decode(id_pegawai,200,nilai,0)) as pgw200,sum(decode(id_pegawai,222,nilai,0)) as pgw222 
from(
select * from pegawai
)
group by tgl



Hasil dari syntax diatas adalah seperti ini:
tgl pgw100 pgw111 pgw200 pgw222
1
8
5
0
0
2
0
10
3
0
3
4
0
3
0
4
0
0
0
9

Diatas terlihat seperti pivot di Excel dengan record id_pegawai, saya jadikan nama kolom. Pegawai dengan id_pegawai  : 222 telah terjumlahkan nilainya menurut tgl yang tersedia.
Selamat Berkreasi kawan

Tidak ada komentar:

Posting Komentar