Oracle Query:如何从此日志表中获取最新的Active Record?

时间:2015-09-01 13:17:22

标签: sql oracle oracle11g

我在ServerKeyLog Table下面跟踪服务器级别的所有Key更改。 现在对应于选定的日期范围,我需要检索每个KeyId的最新发布日期记录,如果它是IsActive Flag =' T'。 如果最近的IsActive Flag =' F'对于任何密钥,我们都不需要检索该密钥。

感谢您的时间。

enter image description here

2 个答案:

答案 0 :(得分:2)

要获取有关最新ISACTIVE = T的ID的所有信息,请使用以下查询:

select *
  from SERVERKEYLOG T1
 WHERE (PUBLISHDATE, KEYID) IN
       (SELECT MAX(PUBLISHDATE) RECENT, KEYID
          FROM SERVERKEYLOG
         GROUP BY KEYID)
   AND T1.ISACTIVE = 'T'

答案 1 :(得分:2)

假设您的日期范围是8月份的任何日期,您可以这样做:

select *
 from (select skl.*,
              row_number() over (partition by skl.KeyId order by skl.PublishDate desc) as rn
         from ServerKeyLog skl
        where skl.PublishDate >= date '2015-08-01'
          and skl.PublishDate < date '2015-09-01')
where rn = 1
  and IsActive = 'T'
order by KeyId