Query

如何選擇每個月的最後一條記錄

  • October 8, 2019

我有一張桌子:

Table1(DDate date,Deposit_Key Number , Amount Number)

一些範例數據是:

DDate       Deposit_key        Amount
1/1/2019          1              10
1/2/2019          1              20
1/3/2019          1              30
1/4/2019          1              40
 ----           ---             ---
1/31/2019         1              100

我有一個月的數據,我需要檢索該Amount月最後一天的數據。我的意思是我需要有100。對此最好的查詢是什麼?我是 oracle 的新手,我想知道是否有比使用 row_number() over(partition) 更好的方法?提前致謝

Oracle 內置函式LAST_DAY可以在這里為您提供幫助。

它可以與日期或時間戳一起使用,基於您的表描述的範例是:

SELECT * FROM TABLE1 
WHERE EXTRACT(DAY FROM DDATE) = EXTRACT(DAY FROM LAST_DAY(DDATE))
AND EXTRACT (MONTH FROM DDATE) = 1;

在 Oracle 中有很多方法可以處理日期,但我喜歡使用 EXTRACT,因為它可以處理日期和時間戳,這意味著您不必使用 TO_CHAR 函式。

引用自:https://dba.stackexchange.com/questions/250439