簡體   English   中英

考慮最近修改的日期取值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM