通过具有多个时间戳的唯一ID获取最新的表条目

时间:2017-06-20 13:45:13

标签: sql oracle

我在Oracle数据库中有一个包含机器事务的表,我需要找到上次对产品执行操作的时间。

产品由唯一ID跟踪,机器操作都带有时间戳。产品不会总是打到每台机器上,否则我可以静态地从最后一台机器上调用时间戳。我希望仅从某个过程获取数据,并且在2016年1月1日之后,其逻辑已在其他查询中运行。

enter image description here

我的查询尝试到目前为止,这将返回所有条目,所以我需要一些东西来减少到最后一个动作:

select UniqueID, TimeStamp, MachineName 
from TransactionTable 
where ActionPerformed like 'action' 
and TimeStamp > '1/1/2016' 
group by UniqueID, TimeStamp 
order by UniqueId, TimeStamp desc

1 个答案:

答案 0 :(得分:1)

您可以为日期desc命令的每个UniqueID生成一个序列:

  SELECT * 
  FROM    
      (SELECT UniqueID, TimeStamp, MachineName, 
      ROW_NUMBER() OVER (PARTITION BY UniqueID ORDER BY TimeStamp DESC)
      AS SEQ
      FROM TransactionTable
      WHERE ActionPerformed LIKE 'action' 
      AND TimeStamp > '1/1/2016' 
  )PR
  WHERE SEQ = 1