sql >> Databáze >  >> RDS >> Oracle

Spojení dat z 5 tabulek bez duplicitních hodnot a získání výsledku s vlastním stavem v Oracle 10g

Můžete „hodnotit“ různé stavy na základě své logiky a poté z nich vybrat nejnovější stav. Můžete použít logiku podobnou té níže, která potlačí všechna „odmítnutí“.

Ujistěte se, že jste zahrnuli všechny ostatní možné stavy, pokud vám záleží na pořadí ostatních z nich.

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



  1. Nainstalujte MySQL Workbench pro správu databáze

  2. Cizí klíče odkazující na jiné cizí klíče v PostgreSQL

  3. Vyhledávání telefonních čísel v databázi ignorování speciálních znaků

  4. Funkce MySql 5.7 Výchozí řazení UUID() - Nelegální kombinace řazení