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)
一种方法是这样的:
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)