oracle - 如何从创建的列中选择最新记录
问题描述
我有一张表,里面有一堆经常更新的记录,我正在尝试编写一个代码来只提取最新的记录。在理想情况下,我会使用 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 |
如果有人可以让我知道如何重试这些数据,那就太好了。
谢谢你
解决方案
您可以使用COALESCE
和 FETCH FIRST n ROWS ONLY
(Oracle 12):
SELECT *
FROM table_name
ORDER BY COALESCE(UPDATED_DATE, CREATED_DATE) DESC
FETCH FIRST 2 ROWS ONLY;
推荐阅读
- scala - 无法覆盖特征的抽象方法
- python - 将 Python DataFrame 作为 CSV 写入 Azure Blob
- reactjs - FlatList 没有从道具渲染数据
- java - 在 android 项目中使用 htmlunit.jar 库时出现 Proguard 问题
- angular - 单击另一个元素或元素外部(角度 4)时如何删除一个类?
- javascript - for循环上的未定义标识符
- javascript - 反应使用从父母到孩子的参考
- dart - 使用 Flutter 单击按钮后的网络请求
- excel - 如何在 Excel 中创建用于输入数据的自定义快捷方式?
- sql - Lag Lead 计算一个期间的开始和结束订阅数