sql语句中分组取每组的最新数据

今天敲sql的时候遇到了一个问题,业务流程是
检查记录->整改通知->整改回复->检查组复查
如果复查不通过 则 检查组复查->整改通知->整改回复->检查组复查
此时一条检查记录就可能对应多条整改通知去最新数据就用到了分组

简化一下模型 要显示最新时刻的物品价格goods(其实不太一样我的情况主键相当于这里的time)

编号num 价格price 时间 time
1 5 1
1 6 2
2 10 3
2 8 4

查询结果应该为

编号num 价格price 时间 time
1 6 2
2 8 4

想了半天这个查询都得查两次
实现方式1
select * from goods right join
(select max(time) maxtime from goods group by num) c on goods.time=c.maxtime
在这里插入图片描述
实现方式2(如果time是唯一的话)
select * from goods where time in (select max(time)from goods group by num) ;
在这里插入图片描述
实现方式3(在 oracle数据库中)
select * from (select num ,row_number() over (partition by time order by num desc) flag from goods) where flag=1

发布了95 篇原创文章 · 获赞 13 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览