Oracle
 sql >> Database >  >> RDS >> Oracle

Converti lo script Coldfusion nella vista Oracle con CASE e iterazione

Non conosco ColdFusion, ma penso di aver capito la logica. La priorità è attuale> cronologia> diversa. Non è chiaro quale riga sia corretta quando sono presenti due current righe o solo different righe, quindi contrassegno la riga con valid_from minimo in tal caso. Se non ti interessa puoi omettere questo parametro (rimuovi unit_valid_from da row_number order by clausola):

select units.*, 
       case when 1 = 
           row_number() over (
               partition by org_id 
               order by case origin when 'current' then 1 when 'history' then 2 else 3 end, 
                        unit_valid_from ) then 1 else 0 end as is_correct_version
  from units