sql >> Database teknologi >  >> RDS >> Oracle

Hvis erklæring inden for Hvor-klausulen

CASE kan måske hjælpe dig:

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-sætningen evaluerer flere betingelser for at producere en enkelt værdi. Så i den første brug tjekker jeg værdien af ​​status_flag, returnerer 'A', 'T' eller null afhængigt af, hvad dens værdi er, og sammenligner det med t.status. Jeg gør det samme for kolonnen business_unit med en anden CASE-sætning.



  1. SQLite JSON_QUOTE()

  2. MariaDB BENCHMARK() Forklaret

  3. SQL BESTIL EFTER

  4. LISTAGG i Oracle for at returnere forskellige værdier