sql >> Base de Datos >  >> RDS >> Oracle

Aprendiendo Oracle, configuración booleana basada en fecha

Si tiene el has_unpaid_bill columna en la tabla en primer lugar? Depende de SYSDATE . El requisito huele a una columna virtual, pero no puede usar SYSDATE allí ya que no es una función determinista. Por lo tanto, ¿qué tal una vista ¿en cambio? Mantenga los datos que necesita en la tabla, pero consulte la vista:

Tabla y varios registros de muestra:

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.

Ver:

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>