我有包含 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
请帮助得到这个。谢谢
试试这个:
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;
PS:test1 是我的表名和你的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句