简体   繁体   English

考虑最近修改的日期取值

[英]Taking a value considering the most recently amended date

I have the following columns where I need to take the most updated ID considering the most recent date an amendment has been made.考虑到最近的修改日期,我需要在以下列中获取最新的 ID。 For instance, I have used NVL(Updated_Date, Date) as Date, but am unsure of how to now take the ID that corresponds.例如,我使用 NVL(Updated_Date, Date) 作为日期,但不确定现在如何获取对应的 ID。 The Code column is the one that I use to link to a separate table.代码列是我用来链接到单独表格的列。

+--------------------------------------------+
| ID  |  DATE    |   UPDATED_DATE |   CODE   |
+--------------------------------------------+
| 123 | 1/2/2019 |                |   987    |
| 456 | 1/1/2019 |    2/4/2019    |   654    |
| 789 | 1/1/2019 |                |   654    |
+--------------------------------------------+

Ideally I would retrieve:理想情况下,我会检索:

+----------------+
| ID  |   CODE   |
+----------------+
| 123 |   987    |
| 456 |   654    |
+----------------+

Many thanks in advance!提前谢谢了!

In Oracle, you can use aggregation and keep :在 Oracle 中,您可以使用聚合并keep

select code,
       min(id) keep (dense_rank first_value order by updated_date desc nulls lat) as id
from t
group by code;

Assuming you want the first row for each CODE which has the latest UPDATED_DATE then you can use the ROW_NUMBER() analytic function:假设您想要具有最新UPDATED_DATE的每个CODE的第一行,那么您可以使用ROW_NUMBER()分析 function:

Oracle Setup : Oracle 设置

CREATE TABLE table_name ( ID, "DATE", UPDATED_DATE, CODE ) AS
SELECT 123, DATE '2019-02-01', NULL,              987 FROM DUAL UNION ALL
SELECT 456, DATE '2019-01-01', DATE '2019-04-02', 654 FROM DUAL UNION ALL
SELECT 789, DATE '2019-01-01', NULL,              654 FROM DUAL;

Query :查询

SELECT ID, CODE
FROM   (
  SELECT t.*,
         ROW_NUMBER()
           OVER ( PARTITION BY code
                  ORDER BY UPDATED_DATE DESC NULLS LAST ) AS rn
  FROM   table_name t
)
WHERE rn = 1;

Output : Output

 ID |身份证 | CODE --: |代码 --: | ---: 456 | ---: 456 | 654 123 | 654 123 | 987 987

db<>fiddle here db<> 在这里摆弄

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM