1、目前有一个场景,表中有product_id,price,create_date,由于同一个id根据create_date的不同,price也会变化,如:
2、那么通过rank() over如何获得最新时间的price呢,可以使用如下语句:
select * from (
select product_id,price,rank() over(partition by product_id order by create_date desc) r from view_cm_dept_receive m) where r=1
意思是按照product_id进行分区,然后以create_date降序排序,此时同一个product_id按照create_date降序排序后,r的值就是1,2,3,4,5,6等,因此在外部使得r=1就是取第一条记录,也就是2021-10-05 21:51:48的那条记录了。
3、最后执行结果为: