首页 > 解决方案 > 如何从创建的列中选择最新记录

问题描述

我有一张表,里面有一堆经常更新的记录,我正在尝试编写一个代码来只提取最新的记录。在理想情况下,我会使用 updated_date 列来提取最新记录,但是,在许多情况下,updated-date 列是空白的,因此,我必须使用以下代码创建一个新列:

CASE WHEN UPDATED_DATE IS NULL THEN CREATED_DATE ELSE UPDATED_DATE END latest_date

基本上,当 updated_date 为空白时,我创建了一个新列,使用 created_date 现在,我的数据如下所示:

更新日期 audit_id 创建日期 最新日期
2021-04-02 006 2018-06-06 2021-04-02
空值 006 2018-06-06 2018-06-06
2020-03-01 006 2018-06-06 2020-03-01
空值 007 2018-07-07 2018-07-07
2020-04-01 007 2018-07-07 2020-04-01
2019-09-08 007 2018-07-07 2019-09-08

我想检索的只是最新信息:

更新日期 audit_id 创建日期 最新日期
2021-04-02 006 2018-06-06 2021-04-02
2020-04-01 007 2018-07-07 2020-04-01

如果有人可以让我知道如何重试这些数据,那就太好了。

谢谢你

标签: oracle

解决方案


您可以使用COALESCEFETCH FIRST n ROWS ONLY(Oracle 12):

SELECT *
FROM table_name
ORDER BY COALESCE(UPDATED_DATE, CREATED_DATE) DESC
FETCH FIRST 2 ROWS ONLY;

推荐阅读