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

Konvertieren Sie Coldfusion-Skript in Oracle-Ansicht mit CASE und Iteration

Ich kenne ColdFusion nicht, aber ich glaube, ich habe die Logik verstanden. Priorität ist aktuell> Historie> anders. Es ist nicht klar, welche Zeile richtig ist, wenn es zwei current gibt Zeilen oder nur different Zeilen, also markiere ich die Zeile mit mindestens valid_from in diesem Fall. Wenn es Ihnen egal ist, können Sie diesen Parameter weglassen (entfernen Sie unit_valid_from von row_number 's order by Klausel):

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