Jumat, 29 November 2019

Pivot - PostgreSQL

--- convert kolom to row
---data asli
sandipos0101    sandipos0201    sandipos0202 dst
16            5    100         5    4    83    98    10

-- menjadi
sandi    rasio
0101    16
0201    5
0202    100
0203    5
0401    4
0402    83
0501    98
0502    10

SELECT
   unnest(array['0101', '0201', '0202', '0203', '0401', '0402', '0501', '0502']) AS sandi,
   unnest(array[sandipos0101, sandipos0201, sandipos0202,sandipos0203,sandipos0401,sandipos0402,sandipos0501,sandipos0502]) AS rasio
FROM lapbul_rasio_keuangan_triwulanan
ORDER BY sandi
--- convert kolom to row
select
pen2.id_bpr,
pen2.id_bpr_cabang,
sum(case when pen2.pendidikan='S - 3' then COALESCE(kar2.ttl,0) end) s3,
sum(case when pen2.pendidikan='S - 2' then COALESCE(kar2.ttl,0) end) s2,
sum(case when pen2.pendidikan='S - 1' then COALESCE(kar2.ttl,0) end) s1,
sum(case when pen2.pendidikan='Diploma 3' then COALESCE(kar2.ttl,0) end) d3,
sum(case when pen2.pendidikan='Tanpa Gelar' then COALESCE(kar2.ttl,0) end) slta,
sum(case when pen2.pendidikan='Lainnya ' then COALESCE(kar2.ttl,0) end) Lainnya
from (
select pen.id_bpr, cab.id_bpr_cabang, pen.id, pen.pendidikan from (
select
(select id id_bpr from m_bpr where id=4),
id, pendidikan
from m_pendidikan pen where pen.kode_pendidikan in ('03','04','05','06','99','00')) pen
join m_bpr_cabang cab on pen.id_bpr=cab.id_bpr) pen2
left join (select
id_bpr,
id_bpr_cabang,
kode_pendidikan, count(*) ttl
from m_karyawan where id_bpr=4 and status_karyawan='true'and jenis_karyawan='Tetap' and nama_jabatan not like 'ADMIN%'
group by id_bpr,
id_bpr_cabang, kode_pendidikan) kar2 on pen2.id_bpr=kar2.id_bpr and pen2.id_bpr_cabang=kar2.id_bpr_cabang and pen2.id=kar2.kode_pendidikan
group by pen2.id_bpr,
pen2.id_bpr_cabang

Tidak ada komentar:

Posting Komentar

Dynamic Query - SQL Server

Berikut adalah contoh dari bentuk dari Dynamic Query di SQL Server yang dibungkus ke dalam Store Procedure:  USE [Data00] GO SET ANSI_NULLS ...

Popular Posts