Jeg kender ikke ColdFusion, men jeg tror, jeg forstod logikken. Prioritet er aktuel> historie> anderledes. Det er ikke klart, hvilken række der er korrekt, når der er to current
rækker eller kun different
rækker, så jeg markerer række med minimum valid_from
i et sådant tilfælde. Hvis du er ligeglad, kan du udelade denne parameter (fjern unit_valid_from
fra 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