CASE आपकी मदद कर सकता है:
SELECT t.first_name,
t.last_name,
t.employid,
t.status
FROM employeetable t
WHERE t.status = (CASE WHEN status_flag = STATUS_ACTIVE THEN 'A'
WHEN status_flag = STATUS_INACTIVE THEN 'T'
ELSE null END)
AND t.business_unit = (CASE WHEN source_flag = SOURCE_FUNCTION THEN 'production'
WHEN source_flag = SOURCE_USER THEN 'users'
ELSE null END)
AND t.first_name LIKE firstname
AND t.last_name LIKE lastname
AND t.employid LIKE employeeid;
CASE कथन एकल मान उत्पन्न करने के लिए अनेक स्थितियों का मूल्यांकन करता है। इसलिए, पहले उपयोग में, मैं status_flag के मान की जांच करता हूं, 'ए', 'टी' या शून्य लौटाता हूं, जो इसके मूल्य पर निर्भर करता है, और इसकी तुलना t.status से करता है। मैं दूसरे केस स्टेटमेंट के साथ business_unit कॉलम के लिए भी ऐसा ही करता हूं।