Conditional Filter In SQL Server Query

Menggunakan query untuk menampilkan data merupakan hal yang sering kita lakukan jika berhubungan dengan data yang tersimpan di dalam database.

Dan best practice-nya adalah sebaiknya kita membuat sebuah stored procedure daripada melakukan hard code query di dalam program karena akan lebih mudah melakukan perawatan terhadap query tersebut jika suatu saat terdapat perubahan logika.

Di dalam stored procedure sendiri kita mudah untuk melakukan beberapa macam logika kondisi. Tetapi hal tersebut akan membuat isi dari stored procedure terlihat lebih panjang dan lebih susah dimengerti untuk pertama kali.

Kita coba bandingkan query untuk logika kondisi dibawah ini :

CARA 1 :

IF @var = 1
BEGIN
           SELECT * FROM TABLE_NAME WHERE Column = 'A'
END
ELSE
BEGIN
           SELECT * FROM TABLE_NAME WHERE Column = 'B'
END

CARA 2 :

SELECT * FROM TABLE_NAME WHERE
CASE WHEN @Var = 1 THEN 'A' ELSE 'B' END = Column

Dari sample diatas terlihat bahwa cara kedua akan terlihat lebih pendek dalam penulisan script-nya.
Bayangkan jika logika kondisi terdapat lebih dari 3 filter maka cara nomor 2 akan jauh lebih mudah untuk dibaca dan lebih ringkas.

Dibawah ini sebuah contoh lagi sebuah stored procedure yang akan menampilan all jika @Category adalah "All" dalam hal ini diwakili dengan value 0 dan akan memfilter sesuai kategori jika pilihan @Category selain "All"

CREATE PROCEDURE [dbo].[sp_SAMPLE]
@Category Int
AS
BEGIN
SELECT * FROM Table_Name WHERE
CASE
WHEN @Category = 0 THEN 0
ELSE Table_Name.ID
END = @Category ORDER BY ID ASC
END

Semoga posting tentang "Conditional Filter In SQL Server Query" ini dapat bermanfaat.



Salam,

Popular posts from this blog

K2 Error Value Cannot Be Null. Parameter Name: s In SmartView and SmartObject

Cara inject USB 3.0 Driver pada instalasi Windows - How to Inject USB 3.0 Driver in Windows 7

Pentaho Spoon Error : "Could Not Create The Java Virtual Machine"