如何获取列中的最新时间戳(Max)

时间:2015-07-15 19:58:12

标签: sql oracle

我有一个名为“ SYS_CREAT_TS ”的专栏。我希望查询获取状态代码为2的REV数据以及状态代码为2的最新时间戳。

 SELECT RVSN FROM DATA_STUS WHERE DATA_STUS_CD = 2 AND SYS_CREAT_TS IN MAX(SYS_CREAT_TS);

更多细节

没有最新的时间戳比较查询。我的版本号(RVSN)为2446,2442。

但是我想要这两个时间戳之间的最新时间戳和它们各自的修订号。

  1. 15-JUL-15 03.20.25.769000000 PM - > 2442
  2. 15-JUL-15 03.23.03.940000000 PM - > 2446
  3. 第二个是最新的。我正在使用Oracle 12C。因此,查询结果应为 2446

3 个答案:

答案 0 :(得分:1)

这将有效:

select rvsn
from (
  select rvsn, row_number() over (order by sys_creat_ts desc) as rn
  from data_stus
  where data_stus_cd = 2
) where rn = 1;

答案 1 :(得分:0)

with x as (select *, row_number() over(order by SYS_CREAT_TS desc) as rn 
from DATA_STUS)
SELECT RVSN FROM x 
WHERE rn =1 and DATA_STUS_CD = 2 

如果数据需要按列进行分区,请将其添加到over子句中,以便获得所需的结果。

答案 2 :(得分:0)

SELECT RVSN 
FROM DATA_STUS 
WHERE DATA_STUS_CD = 2 
AND SYS_CREAT_TS  = (SELECT MAX(SYS_CREAT_TS)
                     FROM RVSN
                     WHERE DATA_STUS_CD = 2)

这样的事情能解决你的问题吗?