Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Verbinden von Daten aus 5 Tabellen ohne doppelte Werte und Abrufen von Ergebnissen mit benutzerdefiniertem Status in Oracle 10g

Sie können verschiedene Status basierend auf Ihrer Logik "einordnen" und dann den neuesten Status daraus auswählen. Sie können eine ähnliche Logik wie unten verwenden, die alle "Ablehnungen" herunterdrückt.

Stellen Sie sicher, dass Sie alle anderen möglichen Status angeben, wenn Ihnen die Reihenfolge für den Rest wichtig ist.

with t1 as
( select 1 id, 'Waiver Requested'        status from dual union all
  select 1 id, 'Rejected'        status from dual union all
  select 2 id, 'Waiver Requested'        status from dual union all
  select 2 id, 'Waiver Requested'        status from dual union all
  select 3 id, 'Rejected'                status from dual union all
  select 3 id, 'Rejected'                status from dual union all
  select 4 id, 'Waiver Requested'        status from dual union all
  select 4 id, 'Cancelled'               status from dual
)
select id,
       status,
       max(status) KEEP (DENSE_RANK FIRST
                         order by (case when status ='Rejected' then -1
                                            else 1
                                       end) desc)
          over (partition by id) final_status
  from t1

        ID STATUS           FINAL_STATUS
---------- ---------------- ----------------
         1 Waiver Requested Waiver Requested
         1 Rejected         Waiver Requested
         2 Waiver Requested Waiver Requested
         2 Waiver Requested Waiver Requested
         3 Rejected         Rejected
         3 Rejected         Rejected
         4 Waiver Requested Waiver Requested
         4 Cancelled        Waiver Requested