Ruwetnya menyusun data kombinasi, crosstab, array, transpose colum dsb….
Alhamdulillah Ya…ada PostGreSQL…dimana gratis, komplit, enterprise grade dan powerfull serta dukungan forum seantero jagad internet kita pake semboyan penamabah semangat……Where is A will there is A way…….atau yang ini…..Inna ma’al usri yusron…..fainna ma’al usri yusron…..
Terkadang walau hasil dari suatu pengolahan data nilai informasinya tidak begitu sangat penting namun kalau sudah menjadi keharusan, mandatory atau syarat formal harus juga dibuat bagaimanapun caranya hehehehehe…resiko pekerjaan….Dibawah ini adalah bahan mentah data yang hendak diolah diambil menggunakan query sederhana…
" select * from tbljdwlpetugas where id_jdwl=’122010’ "……..menggunakan pgAdmin….
![]() |
Dan hasil yang diminta adalah sebagai berikut….sebagai reporting….yang jarang dibuat dan dipakai …sungguh ironis…dan menyakitkan…bikinnya susah…makainya belum tentu…
|
Hasil diatas merupakan hasil transpose atau pivot dari data tabel diatas (gambar 1 )….kalau data tabel mentahnya rc_petugas dan rl_petugas mempunyai raw data array berupa tanggal maka dalam hasil output reportingnya akan ditranspose sebagai column juga sebagai tanggal dan diasndingkan dengan kolom rl_petugas sebagai row pasangannya….nah ini yang ruwet……
Untuk mewujudkannya…dipakailah beberapa tingkat query dan query utamanya adalah :
select i as tgl, getpair_rcrl(i,’122010’,’r’) as rc,ARRAY(select lpad(rc_petugas[i],2,’0’)from tbljdwlpetugas where id_jdwl=’122010’) as petugas_rc, getpair_rcrl(i,’122010’,’l’) as rl,
ARRAY(select lpad(rl_petugas[i],2,’0’) from tbljdwlpetugas where id_jdwl=’122010’) as petugas_rl,
case
when getpair_rcrl(i,’122010’,’l’) =0 then 0
else (getpair_rcrl(i,’122010’,’l’)/ getpair_rcrl(i,’122010’,’r’)) *100
end
as pencapaian from generate_series(1,31) as i
Seperti yang saya katakan bahwa ini salah satu query saja dan hasilnya memang bukan seperti gambar output report di atas tapi baru seperti ini
![]() |
Tugas selanjutnya adalah menyusun dataset tersebuty ke dalam reporting designer…saya sendiri pakai FastReport…dan jadilah tampilan yang diinginkan seperti gambar 1 di atas…
Mudah-mudahan ini bisa memberi catatan ingatan untuk saya sendiri dan kalau ada manfaatnya buat orang lain…..ada yang kurang dalam mungkin dalam Query utama tersebut di atas yaitu fungsi getpair_rcrl…scriptnya sderhana sbb :
REATE OR REPLACE FUNCTION getpair_rcrl(tgl integer, idjdwl varchar,rcrl char)
RETURNS float AS
$BODY$
DECLARE
hasil float;
BEGIN
IF rcrl = ’r’ THEN
select count(rc_petugas[tgl]) into hasil from tbljdwlpetugas where rc_petugas[tgl]::int > 0 and id_jdwl=idjdwl;
ELSE
select count(rl_petugas[tgl]) into hasil from tbljdwlpetugas where rl_petugas[tgl]::int > 0 and id_jdwl=idjdwl;
END IF;
RETURN hasil;
END;
$BODY$
LANGUAGE ’plpgsql’ VOLATILE
COST 100;
ALTER FUNCTION getpair_rcrl(integer, varchar, char) OWNER TO AQNAN



