Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle APEX - SQL - Création d'un historique séquentiel et calcul des jours entre chaque phase

Je dirais que vous capturez déjà toutes les métriques dont vous avez besoin, puisque la durée peut être dérivée à partir des données existantes. Vous pouvez créer une vue :

create or replace  view vw_doc_timeline as
  select t.doc_entry_id, t.doc_id, t.doc_status, t.doc_date
       , case when doc_status = 'Published' then 0
              else lead(doc_date) over (partition by doc_id order by doc_entry_id)
                   - doc_date
              end as duration
  from tbl_doc_timeline t;

Ensuite :

SQL> select * from vw_doc_timeline;

DOC_ENTRY_ID     DOC_ID DOC_STATUS                     DOC_DATE    DURATION
------------ ---------- ------------------------------ --------- ----------
           1        123 Planned                        05-JUN-12         10
           7        123 Draft                          15-JUN-12          5
          38        123 Approval                       20-JUN-12         10
         102        123 Published                      30-JUN-12          0