带有for/while循环的SQL条件选择

Ann*_*ang 3 sql oracle conditional for-loop

这是表:

Order_ID|Priority|Status 
A       |3       |Normal
A       |4       |Urgent
B       |6       |Urgent
B       |7       |Normal 
C       |8       |Normal
C       |9       |Urgent
Run Code Online (Sandbox Code Playgroud)

如何选择行ID优先级高于该ID的Order_ID和Status?例如,在这种情况下,给定上述数据的查询输出应为:

A - Urgent
B - Normal
C - Urgent
Run Code Online (Sandbox Code Playgroud)

Jef*_*olt 5

一种方法是这样的:

select order_id || ' - ' || status
from (
    select order_id, priority, status,
           rank() over (partition by order_id order by priority desc) ranking
    from table
)
where ranking = 1;
Run Code Online (Sandbox Code Playgroud)