sql >> Database >  >> RDS >> Oracle

Als verklaring binnen Where-clausule

CASE kan je misschien helpen:

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;

De CASE-instructie evalueert meerdere voorwaarden om een ​​enkele waarde te produceren. Dus bij het eerste gebruik controleer ik de waarde van status_flag, waarbij 'A', 'T' of null wordt geretourneerd, afhankelijk van wat de waarde is, en vergelijk dat met t.status. Ik doe hetzelfde voor de kolom business_unit met een tweede CASE-instructie.



  1. Hoe vind je niet-bestaande gegevens uit een andere tabel met JOIN?

  2. Is ODP.NET vereist voor Oracle 11g Client?

  3. VOORBEELD:SentryOne Plan Explorer-extensie voor Azure Data Studio

  4. 12c Adaptieve abonnementen