Si je comprends bien, vous voulez la dernière valeur qui est l'une des quatre que vous spécifiez (c'est-à-dire pas 'NONE'
). Les fonctions de fenêtre sont probablement la solution la plus simple :
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';