table (sysdate) 中特定列的动态开始日期

Dynamic start date from specific column in a table (sysdate)

我是这个领域的新手,正在慢慢学习所以请耐心等待我:)

我的数据库包含一个名为 t_usage_interval 的 table。在这个 table 中有一个列名 ID_Interval。每个月都会在此列中创建一个新的随机 10 位数字。

This is the query I am using

我想知道是否有办法通过使用带有 SYSDATE 选项的列名 DT_START 来提取最新的时间间隔?我想这将是来自 sysdate 的动态查询搜索以显示最新的 ID_Interval?

谢谢, A

我是这样理解这个问题的。

一个直接查询returns行,其dt_start是table中第一个小于或等于sysdate(如果您不关心时间分量,您也可以使用 trunc(sysdate))。此查询的缺点是它扫描 t_usage_Interval table 两次。

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对行(dt_start低于sysdate)进行“排名”,然后return 排名“最高”的行。此选项仅扫描 table 一次,因此性能应该更好。

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;