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

Convertir le script Coldfusion en vue Oracle avec CASE et itération

Je ne connais pas ColdFusion, mais je pense avoir compris la logique. La priorité est actuelle > historique > différente. Il n'est pas clair quelle ligne est correcte lorsqu'il y a deux current lignes ou seulement different lignes, donc je marque la ligne avec un minimum de valid_from dans ce cas. Si vous ne vous souciez pas Vous pouvez omettre ce paramètre (supprimer unit_valid_from de row_number de order by clause):

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