我的表包含order_id,status和update_date。状态可能是成功或失败。每个订单可以多次具有这些状态,具有不同的更新日期,除了“成功”和“成功”。状态如下。
order_id status update_date
1001 failure 01-01-2015
1001 failure 02-01-2015
1001 success 03-01-2015
1001 failure 04-01-2015
1002 failure 02-01-2015
1002 failure 03-01-2015
我需要选择具有最新更新日期的每个订单ID及其各自的状态,如果订单具有成功状态,则其各自的更新日期如下
1001 success 03-01-2015
1002 failure 03-01-2015
请帮忙解决这个问题。感谢
答案 0 :(得分:2)
试试这个:
SELECT order_id,
status,
update_date
FROM(SELECT order_id,
status,
update_date,
ROW_NUMBER() over (partition BY order_id order by DECODE(status,'success',1,0) DESC,update_date DESC) rn
FROM test1)
WHERE rn=1;
P.S:test1是我的表名和你的数据。