我是這個領域的新手,想慢慢學習,所以請耐心等待:)
我的資料庫包含一個名為 t_usage_interval 的表。在這個表中有一個列名 ID_Interval。每個月都會在此列中創建一個新的隨機 10 位數字。
這是我正在使用的查詢
我想知道是否有辦法通過使用列名 DT_START 和 SYSDATE 選項來拉出最新間隔?我想這將是來自 sysdate 的動態查詢搜索以顯示最新的 ID_Interval?
謝謝你,阿
uj5u.com熱心網友回復:
我是這樣理解這個問題的。
一個簡單的查詢回傳dt_start該表中第一個小于或等于 sysdate 的行(trunc(sysdate)如果您不關心時間分量,您也可以使用)。此查詢的缺點是它掃描t_usage_Interval表兩次。
select *
from t_usage_interval a
where a.dt_start = (select max(b.dt_start)
from t_usage_interval b
where b.dt_start <= sysdate
);
不太直觀的選項是按 對行(其dt_start低于 sysdate)進行“排名” dt_start,然后回傳排名“最高”的行。此選項僅掃描表一次,因此性能應該會更好。
with temp as
(select a.*,
rank() over (order by a.dt_start desc) rn
from t_usage_interval a
where a.dt_start <= sysdate
)
select t.*
from temp t
where t.rn = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/362600.html
