sql >> Database >  >> RDS >> Oracle

Oracle leren, boolean instellen op basis van datum

Mocht u de has_unpaid_bill . hebben kolom in de tabel op de eerste plaats? Het hangt af van SYSDATE . De vereiste ruikt naar een virtuele kolom, maar - u kunt SYSDATE niet gebruiken daar omdat het geen deterministische functie is. Daarom, wat dacht je van een weergave in plaats van? Bewaar de gegevens die u nodig heeft in de tabel, maar bevraag de weergave:

Tabel en verschillende voorbeeldrecords:

SQL> create table test
  2    (id                  number,
  3     last_bill_paid_date date
  4    );

Table created.

SQL> insert into test values (1, date '2020-11-09');

1 row created.

SQL> insert into test values (1, date '2020-11-02');

1 row created.

Bekijk:

SQL> create or replace view v_test as
  2    select id,
  3           last_bill_paid_date,
  4           case when trunc(sysdate) - last_bill_paid_date > 5 then 'Y'
  5                else 'N'
  6           end has_unpai_dbill
  7    from test;

View created.

SQL>
SQL> select * from v_test;

        ID LAST_BILL_ H
---------- ---------- -
         1 09.11.2020 N
         1 02.11.2020 Y

SQL>



  1. SQL:Zoek de volgende rij in een waar-clausule met een ID

  2. Reader-oplossingen voor de uitdaging van Special Islands

  3. SQL-probleem met uitchecktijden

  4. Negeer de datumbereikparameter in de waar-clausule wanneer de parameter niet is ingevoerd