Eén methode gebruikt row_number()
:
select t.*
from (select t.*,
row_number() over (partition by orderid
order by instr('LOW,MEDIUM,HIGH', status) as seqnum
from transaction t
) t
where seqnum = 1;
instr()
is gewoon een handige manier om een volgorde aan strings toe te kennen. Het retourneert de positie van de status in het eerste argument, wat in dit geval handig is voor sorteerdoeleinden.