Jag känner inte till ColdFusion, men jag tror att jag förstod logiken. Prioritet är aktuell> historia> annorlunda. Det är inte klart vilken rad som är korrekt när det finns två current
rader eller bara different
rader, så jag markerar rad med minsta valid_from
i sådant fall. Om du inte bryr dig kan du utelämna den här parametern (ta bort unit_valid_from
från row_number
s order by
klausul):
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