sql - 在共享 FK 的一组数据中选择最新的行集
问题描述
我有一组具有以下布局的数据:
SPECNUMBER | CHANGEDATE | CHANGE
1 | 01/01/2019 | zzz
1 | 01/01/2019 | xxx
1 | 01/01/2019 | vvv
1 | 30/07/2019 | yyy
1 | 30/07/2019 | uuu
1 | 30/07/2019 | www
2 | 01/01/2019 | zzz
2 | 01/01/2019 | xxx
2 | 01/01/2019 | vvv
2 | 22/07/2019 | yyy
2 | 22/07/2019 | uuu
2 | 22/07/2019 | www`
我想只返回最新的集合,因此只返回上面示例中每个规范编号的底部 3 行,因此生成的数据集如下所示:
SPECNUMBER | CHANGEDATE | CHANGE
1 | 30/07/2019 | yyy
1 | 30/07/2019 | uuu
1 | 30/07/2019 | www
2 | 22/07/2019 | yyy
2 | 22/07/2019 | uuu
2 | 22/07/2019 | www`
我试图使用 MAX(changedate) 但是我的实现只返回数据集中最大的changeate。
解决方案
你想要rank()
:
select t.*
from (select t.*, rank() over (partition by SPECNUMBER order by CHANGEDATE desc) as seq
from table t
) t
where seq = 1;
推荐阅读
- css - 如何设置 UTF 箭头样式➤
- python-3.x - 从数据库mysql中检索数据
- php - 如果打开流失败重试:HTTP 请求失败!1 PHP
- java - 错误:无法弄清楚如何将此字段保存到数据库中
- java - 收到错误 [Dagger/MissingBinding]
- reactjs - 在 React.js 中的数组上使用 filter() 后如何重置为初始状态?
- java - TreeMap 自动删除
- github - GitHub GraphQL API 中的 ID 和 databaseID 有什么区别?
- spring-boot - Spring Boot 获取请求参数
- ruby-on-rails - 如何使用 GET 请求作为 XHR 处理 form_with