[英]Taking a value considering the most recently amended date
考慮到最近的修改日期,我需要在以下列中獲取最新的 ID。 例如,我使用 NVL(Updated_Date, Date) 作為日期,但不確定現在如何獲取對應的 ID。 代碼列是我用來鏈接到單獨表格的列。
+--------------------------------------------+
| ID | DATE | UPDATED_DATE | CODE |
+--------------------------------------------+
| 123 | 1/2/2019 | | 987 |
| 456 | 1/1/2019 | 2/4/2019 | 654 |
| 789 | 1/1/2019 | | 654 |
+--------------------------------------------+
理想情況下,我會檢索:
+----------------+
| ID | CODE |
+----------------+
| 123 | 987 |
| 456 | 654 |
+----------------+
提前謝謝了!
在 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;
假設您想要具有最新UPDATED_DATE
的每個CODE
的第一行,那么您可以使用ROW_NUMBER()
分析 function:
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;
查詢:
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 :
身份證 | 代碼 --: | ---: 456 | 654 123 | 987
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.