Friday 27 March 2015

Turning a Comma Separated string into individual rows

Berikut adalah isi dari tabel T_Transaksi
Perhatikan id_pertanyaan.
Permasalahan nya disini adalah saya ingin mendapatkan data berapa id_pertanyaan "1" pada id_poli "1" dan i_kategori "1" sehingga dapat saya kalkulasikan.

Dan akhirnya saya menemukan ini http://stackoverflow.com/questions/5493510/turning-a-comma-separated-string-into-individual-rows


Namun dengan beberapa modifikasi yang sesuaikan dengan kebutuhan akhirnya seperti ini, :D

;WITH TabelTransaksi(id_poli, id_kategori,pertanyaan,id_pertanyaan)
AS
(
    SELECT id_poli, id_kategori, LEFT(id_pertanyaan, CHARINDEX(',',id_pertanyaan+',')-1),
        STUFF(id_pertanyaan, 1, CHARINDEX(',',id_pertanyaan+','), '')
    FROM T_Transaksi   

UNION ALL
    SELECT id_poli, id_kategori, LEFT(id_pertanyaan, CHARINDEX(',',id_pertanyaan+',')-1),
        STUFF(id_pertanyaan, 1, CHARINDEX(',',id_pertanyaan+','),'')
    FROM TabelTransaksi
    WHERE id_pertanyaan > ''
)

SELECT TabelTransaksi.id_poli AS ID_POLI, M_Divisi.nama_poli AS NAMA_POLI, TabelTransaksi.id_kategori AS ID_KATEGORI, T_Kategori.nama_kategori AS NAMA_KATEGORI, pertanyaan AS ID_PERTANYAAN, M_Pertanyaan.nama_pertanyaa as PERTANYAAN, COUNT(pertanyaan) as JUMLAH_RESPONDEN_PER_PERTANYAAN
FROM TabelTransaksi join M_Divisi
on TabelTransaksi.id_poli = M_Divisi.id_poli join T_Kategori
on TabelTransaksi.id_kategori = T_Kategori.id_kategori join M_Pertanyaan
on TabelTransaksi.pertanyaan = M_Pertanyaan.id_pertanyaan
GROUP BY TabelTransaksi.id_poli, TabelTransaksi.id_kategori, pertanyaan, M_Divisi.nama_poli,M_Pertanyaan.nama_pertanyaa,T_Kategori.nama_kategori
ORDER by TabelTransaksi.id_poli


Dan kira-kira hasil nya seperti ini.



No comments:

Post a Comment