Hvis jeg forstår det rigtigt, vil du have den sidste værdi, der er en af de fire, du angiver (dvs. ikke 'NONE'
). Vinduesfunktioner er nok den enkleste løsning:
select t.*
from (select t.*,
first_value(value) over (partition by uaid order by id desc) as current_value
from t
) t
where risk_factor <> 'NONE';