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

Korzystanie ze złożonej instrukcji IF w Oracle SQL

Przeczytaj dokumentację na kolumnach wirtualnych:

CREATE TABLE Rent_Band
(
    Plot_ID NUMBER(3),
    Band VARCHAR(1) AS
       (CASE WHEN Owner_Category = 'Council' AND Sheds ='No' THEN 'A'
            WHEN Owner_Category = 'Private' AND Water_Supply ='Yes' THEN 'D'
            WHEN Owner_Category = 'Council' AND Water_Supply ='No' AND Sheds ='Yes' THEN 'B'
            WHEN Owner_Category = 'Private' AND Water_Supply ='No' AND Sheds ='No' THEN 'B'
       ELSE 'C' END),
    Rent_Charge NUMBER(4), 
    Owner_Category VARCHAR(10) CONSTRAINT Checking_Owner_Category CHECK((Owner_Category='Private') OR (Owner_Category='Council')), 
    Sheds VARCHAR(3) CHECK((Sheds='Yes') OR (Sheds='No')), 
    Water_Supply VARCHAR(3) CHECK((Water_Supply='Yes') OR (Water_Supply='No'))
)

BTW, MOCNO polecam:

  • za pomocą bit pole zamiast Yes /No ograniczenie dla Sheds i Water_Supply (zapisuje ograniczenia dotyczące sprawdzania miejsca i narzutów oraz tłumaczy bezpośrednio na wartość logiczną w większości języków aplikacji)
  • używając tabeli wyszukiwania dla Owner_Category zamiast ograniczenia łańcuchowego z zasadniczo tych samych powodów



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Procedura PL/SQL:UPDATE nazwy wielkich liter do initcaps, ze specjalną obsługą niektórych wartości

  2. JSON_QUERY() Funkcja w Oracle

  3. zatrzymaj się przy błędzie kompilacji w skrypcie sqlplus

  4. Python 3.3 - Połącz z bazą danych Oracle

  5. Jak mogę WYBRAĆ pierwszy wiersz z MAX (wartość kolumny)?