Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jeśli oświadczenie w klauzuli Where

CASE może ci pomóc:

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;

Instrukcja CASE ocenia wiele warunków w celu uzyskania jednej wartości. Tak więc w pierwszym użyciu sprawdzam wartość flagi status_flag, zwracając 'A', 'T' lub null w zależności od tego, jaka jest wartość, i porównuję ją z t.status. To samo robię dla kolumny business_unit z drugim oświadczeniem CASE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyłączyć wyzwalacz w Oracle SQL Developer?

  2. Dostrajanie instrukcji SQL w programie SQL Developer

  3. Jak mogę wybrać rekordy TYLKO z wczoraj?

  4. usuń zduplikowane wiersze z Oracle

  5. 2 sposoby zwracania wierszy zawierających tylko znaki niealfanumeryczne w Oracle