SQL: Summed Up Null Values in Oracle and SQL Server 2000

Sunday, March 16, 2008


Jika anda sering menggunakan SQL statement pasti anda pernah melakukan operasi perhitungan matematika terhadap field-field dalam table anda. tapi pernahkah anda bingung mendapatkan perhitungan yang tidak sesuai terhadap field yang bernilai NOT NULL dengan field yang bernilai NULL. misalnya field A bernilai 4 dan field B bernilai NULL, jika anda lakukan penjulahan dengan SUM(fieldA+fieldB) maka hasilnya akan NULL. untuk itu anda perlu menggunakan sebuah fungsi untuk menggantikan nilai NULL tadi dengan sebuah bilangan/angka agar bisa dilakukan operasi matematika terhadap field yang bernilai null tadi.




untuk tutorial ini saya menggunakan table di database Oracle dengan nama EMP yang ada di schema SCOTT dan saya transfer table ini ke database SQL Server jadi saya menggunakan table yang mempunyai data yang sama. meskipun begitu saya juga akan memberikan contoh untuk anda yang menggunakan Microsoft SQL Server 2000 sebagai Database Software anda. jika anda belum tahu struktur dari table EMP, ini dia strukturnya :



EMPNO NUMBER(4) NOT NULL,

ENAME VARCHAR2(10),

JOB VARCHAR2(9),

MGR NUMBER(4),

HIREDATE DATE,

SAL NUMBER(7,2),

COMM NUMBER(7,2),

DEPTNO NUMBER(2)



dan ini datanya :





Saya akan menghitung Salary + Commision masing-masing pegawai dengan SQL Statement berikut ini :




SELECT EMPNO, ENAME, JOB,

SAL, COMM, SUM(SAL+COMM) TOTAL_SALARY

FROM EMP

GROUP BY EMPNO, ENAME, JOB,

SAL, COMM




SQL Output :



Oracle without NVL

Maka salary pegawai yang tidak mempunyai komisi (komisi = NULL) tidak akan terhitung. untuk itu anda perlu menggunakan fungsi NVL() di Oracle atau fungsi ISNULL() jika anda menggunakan Database Software Microsoft SQL Server.



Syntax fungsi NVL() di Oracle :

NVL(input_value,replace_value_if_null)

Syntax fungsi ISNULL() di SQL Server 2000 :
ISNULL (input_value , replace_value_if_null)




fungsi NVL() atau fungsi ISNULL() akan menggantikan nilai NULL dengan nilai lainnya yang kita definiskan pada parameter kedua (replace_value_if_null) dengan catatan input_value dan replace_value_if_null mempunyai tipe data yang sama. anda akan mendapatkan pesan error jika anda menggunakan tipe data yang berbeda untuk dua parameter tersebut. sekarang saya akan merubah SQL Statement nya dengan menyertakan fungsi NVL() dan fungsi ISNULL() :




Dengan Fungsi NVL () :


SELECT EMPNO, ENAME, JOB, SAL, COMM,

SUM(nvl(SAL,0)+nvl(COMM,0)) TOTAL_SALARY

FROM EMP

GROUP BY EMPNO, ENAME, JOB, SAL, COMM





SQL Output :



Oracle with NVL

Dengan Fungsi ISNULL () :


SELECT EMPNO, ENAME, JOB, SAL, COMM,

SUM(ISNULL(SAL,0)+ISNULL(COMM,0)) TOTAL_SALARY

FROM EMP

GROUP BY EMPNO, ENAME, JOB, SAL, COMM





SQL Output :


SQL Server With ISNULL


dengan SQL Statement diatas maka pegawai yang tidak mempunyai komisi pun dapat terhitung salary-nya. Semoga bermanfaat.

0 comments:

Recent Comments

Tags Cloud

Blogumulus by Roy Tanck and Amanda Fazani