1つのメソッドは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()
文字列に順序を割り当てるための便利な方法です。最初の引数のステータスの位置を返します。これは、この場合の並べ替えの目的に便利です。