首页 > 解决方案 > 使用基于 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

但是,我不知道如何构建这个请求。需要子请求吗?你能帮我么?

谢谢,问候

标签: sqloracle

解决方案


我建议使用ROW_NUMBER() 函数

SELECT *
FROM
(
    SELECT *, ROW_NUMBER() OVER(PARTITION BY External_id ORDER BY "Date") rn
    FROM YourTable
) a
WHERE a.rn = 1;

推荐阅读