Merubah nilai NULL menjadi 0 (Coalesce)

Ada contoh kasus nih… misalkan ada sebuah tabel sebagai contoh nama tabelnya adalah TEMP_BARANG dengan 3 (tiga) field antara lain BARANG, JUAL, RETUR dan kalo digenerate maka DDL-nya seperti berikut ini:

CREATE TABLE TEMP_BARANG (
BARANG VARCHAR(10),
JUAL INTEGER,
RETUR INTEGER);

Dengan data percobaan seperti berikut ini:

Barang Jual Retur
---------------------
Pensil 4 NULL
Buku 3 2

Si boss pengen laporan tiap bulannya seperti ini:

Barang Jual Retur Saldo
----------------------------
Pensil 4 0 4
Buku 3 2 1

Tanpa berpikir panjang aku bikin query yang isinya bisa dilihat dibawah ini.

SELECT BARANG, JUAL, RETUR, (JUAL - RETUR) SALDO
FROM TEMP_BARANG

Tapi setelah query aku jalankan, kok hasilnya seperti dibawah ini… anehh ??? Untuk Pensil kok gak kejumlah, sedangkan Buku kejumlah dengan benar. Masalahnya dimana ya ??

Barang Jual Retur Saldo
----------------------------
Pensil 4 NULL NULL
Buku 3 2 1


Setelah berpikir sebentar dan aku mainkan logika “kayaknya nilai Null harus dirubah menjadi nol (0)”. Aku tekan aja tombol [F1] baca HELP maksudnya… he he… sambil browsing juga.

Akhirnya ketemu jawabannya… ternyata benar, penjumlahan tidak akan berhasil jika lawan penjumlahan bernilai NULL, lihat record Pensil untuk field Jual bernilai 4 sedangkan field Retur bernilai NULL atau KOSONG. Oohh… pantesan aja… terus merubah nilai Null menjadi 0 gimana caranya ?

Di Firebird ada fungsi yang namanya COALESCE, fungsi ini akan membantu kita dalam melakukan format data yang nilainya NULL menjadi format standar sesuai dengan format yang kita inginkan. Syntax-nya seperti dibawah ini:

Coalesce(nama_field,format_yang_diinginkan)

Query dibawah ini akan menghasilkan laporan yang benar sesuai keinginan boss dengan menambahkan fungsi Coalesce.

SELECT BARANG, JUAL, Coalesce(RETUR,0) RETUR, (JUAL - Coalesce(RETUR,0)) SALDO
FROM TEMP_BARANG

Semoga pengalaman diatas bermanfaat. Ingat! saya tidak mengajari anda karena ilmu saya masih dangkal, saya hanya mengarsip pengalaman apabila disuatu saat saya lupa, tinggal cari aja di blog ini… he he he…

2 thoughts on “Merubah nilai NULL menjadi 0 (Coalesce)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s