Memunculkan data dari 2 tanggal yang berbeda dalam 1 tabel sql?

jadi ada 4 tipe pasien yaitu bpjs, jampersal, sktm, dan umum. terus disitu ada periodenya. saya ingin nampilin jumlah_insentif, jumlah_farmasi, jumlah_usg, jumlah_diterima dari masing masing tipe_pasien tapi dalam periode yang berbeda, misalnya bpjs periode Mei 2020, jampersal April 2020, dst tapi dimunculin dalam 1 tabel. apa mungkin?

SELECT insentif.nip, insentif.periode as periode, nama_perawat, id_jabatan, nama_kepegawaian,

            SUM(CASE WHEN skor.periode='2020-05-01'
                THEN skor.skor_bpjs ELSE null END) AS skor_bpjs,
            SUM(CASE WHEN id_tipe_pasien = 'bpjs'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.jumlah_insentif ELSE null END ELSE null END) AS bpjs_insentif,
            SUM(CASE WHEN   id_tipe_pasien = 'bpjs'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.jumlah_farmasi ELSE null END ELSE null END) AS bpjs_farmasi,
            SUM(CASE WHEN   id_tipe_pasien = 'bpjs'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.jumlah_usg ELSE null END ELSE null END) AS bpjs_usg,
            SUM(CASE WHEN   id_tipe_pasien = 'bpjs'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.pph_21 ELSE null END ELSE null END) AS bpjs_pph21,
            SUM(CASE WHEN   id_tipe_pasien = 'bpjs'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.jumlah_diterima ELSE null END ELSE null END) AS bpjs_jumlah_diterima,

            SUM(CASE WHEN skor.periode='2020-05-01'
                THEN skor.skor_jampersal ELSE null END) AS skor_jampersal,
            SUM(CASE WHEN id_tipe_pasien = 'jampersal'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.jumlah_insentif ELSE null END ELSE null END) AS jampersal_insentif,
            SUM(CASE WHEN   id_tipe_pasien = 'jampersal'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.jumlah_farmasi ELSE null END ELSE null END) AS jampersal_farmasi,
            SUM(CASE WHEN   id_tipe_pasien = 'jampersal'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.jumlah_usg ELSE null END ELSE null END) AS jampersal_usg,
            SUM(CASE WHEN   id_tipe_pasien = 'jampersal'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.pph_21 ELSE null END ELSE null END) AS jampersal_pph21,
            SUM(CASE WHEN   id_tipe_pasien = 'jampersal'
                THEN CASE WHEN insentif.periode='2020-05-01' THEN insentif.jumlah_diterima ELSE null END ELSE null END) AS jampersal_jumlah_diterima,

            SUM(CASE WHEN skor.periode='2020-04-01'
                THEN skor.skor_sktm ELSE null END) AS skor_sktm,
            SUM(CASE WHEN id_tipe_pasien = 'sktm'
                THEN CASE WHEN insentif.periode='2020-04-01' THEN insentif.jumlah_insentif ELSE null END ELSE null END) AS sktm_insentif,
            SUM(CASE WHEN id_tipe_pasien = 'sktm'
                THEN CASE WHEN insentif.periode='2020-04-01' THEN insentif.jumlah_farmasi ELSE null END ELSE null END) AS sktm_farmasi,
            SUM(CASE WHEN   id_tipe_pasien = 'sktm'
                THEN CASE WHEN insentif.periode='2020-04-01' THEN insentif.jumlah_usg ELSE null END ELSE null END) AS sktm_usg,
            SUM(CASE WHEN   id_tipe_pasien = 'sktm'
                THEN CASE WHEN insentif.periode='2020-04-01' THEN insentif.pph_21 ELSE null END ELSE null END) AS sktm_pph21,
            SUM(CASE WHEN   id_tipe_pasien = 'sktm'
                THEN CASE WHEN insentif.periode='2020-04-01' THEN insentif.jumlah_diterima ELSE null END ELSE null END) AS sktm_jumlah_diterima,

            SUM(CASE WHEN skor.periode='2019-12-01'
                THEN skor.skor_umum ELSE null END) AS skor_umum,
            SUM(CASE WHEN id_tipe_pasien = 'umum'
                THEN CASE WHEN insentif.periode='2019-12-01' THEN insentif.jumlah_insentif ELSE null END ELSE null END) AS umum_insentif,
            SUM(CASE WHEN   id_tipe_pasien = 'umum'
                THEN CASE WHEN insentif.periode='2019-12-01' THEN insentif.jumlah_farmasi ELSE null END ELSE null END) AS umum_farmasi,
            SUM(CASE WHEN   id_tipe_pasien = 'umum'
                THEN insentif.jumlah_usg ELSE null END) AS umum_usg,
            SUM(CASE WHEN   id_tipe_pasien = 'umum'
                THEN CASE WHEN insentif.periode='2019-12-01' THEN insentif.pph_21 ELSE null END ELSE null END) AS umum_pph21,
            SUM(CASE WHEN   id_tipe_pasien = 'umum'
                THEN CASE WHEN insentif.periode='2019-12-01' THEN insentif.jumlah_diterima ELSE null END ELSE null END) AS umum_jumlah_diterima

            FROM insentif

            JOIN perawat ON perawat.nip=insentif.nip
            JOIN skor ON skor.nip=insentif.nip
            JOIN jenis_kepegawaian ON jenis_kepegawaian.id_kepegawaian=perawat.id_kepegawaian
            GROUP BY insentif.nip

saya udah coba dengan sql diatas tapi hasil yang ditampilin itu ga sesuai dengan apa yang ada di db, hasilnya itu malah 3x lebih besar dari yang di db. hasilnya query diatas kaya gini

data yang diharapkan kira kira seperti ini.

mohon pencerahannya suhu. terimakasih

avatar hellmi17
@hellmi17

1 Kontribusi 0 Poin

Dipost 3 tahun yang lalu

Tanggapan

Bertanya soal Query, agan perlu menyertakan juga:

  1. Data awal (table structure dan data-nya)
  2. Query yang sudah dilakukan (seperti diatas)
  3. Hasil query yang diharapkan - biar bisa dicek dengan data awal.

Di query agan ada beberapa table; mungkin baiknya di sertakan juga. data dummy saja. Dengan adanya data ini, hasil query-nya bisa di cek balik.

Belum ada Jawaban. Jadi yang pertama Jawaban

Login untuk ikut Jawaban