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