CASE có thể giúp bạn:
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;
Câu lệnh CASE đánh giá nhiều điều kiện để tạo ra một giá trị duy nhất. Vì vậy, trong lần sử dụng đầu tiên, tôi kiểm tra giá trị của status_flag, trả về 'A', 'T' hoặc null tùy thuộc vào giá trị của nó là gì và so sánh với t.status. Tôi làm tương tự cho cột business_unit với câu lệnh CASE thứ hai.