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