sql - 使用基于 id 的条件获取最旧的记录
问题描述
我正在尝试根据 id 获取所有最旧的记录(此处External Id
:)
数据
Row | Id | External Id | Date | Status
1 | 100 | 5000 | 2020-10-18 12:00:58 | F
2 | 101 | 5000 | 2020-10-16 14:10:01 | F
3 | 102 | 5000 | 2020-11-19 05:00:54 | P
4 | 103 | 5998 | 2021-01-08 13:22:11 | P
5 | 104 | 1230 | 2020-08-06 11:11:07 | F
6 | 105 | 1230 | 2020-08-08 18:19:52 | P
预期结果
Row | Id | External Id | Date | Status
2 | 101 | 5000 | 2020-10-16 14:10:01 | F
4 | 103 | 5998 | 2021-01-08 13:22:11 | P
5 | 104 | 1230 | 2020-08-06 11:11:07 | F
但是,我不知道如何构建这个请求。需要子请求吗?你能帮我么?
谢谢,问候
解决方案
我建议使用ROW_NUMBER() 函数:
SELECT *
FROM
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY External_id ORDER BY "Date") rn
FROM YourTable
) a
WHERE a.rn = 1;
推荐阅读
- javascript - javascript - 滑块中的对数刻度
- algorithm - 受约束的 N-Rook 解数
- amazon-web-services - Aurelia、Docker、Nginx、AWS Elastic Beanstalk 显示 502 错误网关
- c++ - QT如何查找未翻译的字符串
- awk - awk 搜索文件可能包含多个 id 条目
- reactjs - 如何将 Next.js 应用于使用 create-react-app 创建的 React 项目?
- performance - 在 kubernetes 上查找和设置应用程序资源限制/请求的最佳方法
- c# - 有没有办法反序列化异常对象?
- javascript - 需要从对象数组中提取超过 100,000 人的姓名
- jquery - 在 Selenium 中执行 jQuery