sql >> Database >  >> RDS >> Oracle

Complexe IF-instructie gebruiken in Oracle SQL

Lees de documentatie op virtuele kolommen:

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'))
)

Tussen haakjes, ik zou STERK aanbevelen:

  • met een bit veld in plaats van een Yes /No beperking voor Sheds en Water_Supply (bespaart ruimte en overheadcontroles en vertaalt direct naar boolean in de meeste app-talen)
  • een opzoektabel gebruiken voor Owner_Category in plaats van een tekenreeksbeperking om in principe dezelfde redenen



  1. Aloha-editor:afbeeldingen/afbeeldingen invoegen

  2. SQL-query geeft het eerste resultaat niet weer?

  3. Veld instellen om automatisch tijdstempel in te voegen bij UPDATE?

  4. Hoe voeg ik een rijnummer toe binnen een groep in mijn zoekopdracht