No sé ColdFusion, pero creo que entendí la lógica. La prioridad es actual> historial> diferente. No está claro qué fila es correcta cuando hay dos current
filas o solo different
filas, entonces marco la fila con el mínimo valid_from
En tal caso. Si no le importa, puede omitir este parámetro (eliminar unit_valid_from
de row_number
order by
cláusula):
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