我在Oracle数据库中有一个包含机器事务的表,我需要找到上次对产品执行操作的时间。
产品由唯一ID跟踪,机器操作都带有时间戳。产品不会总是打到每台机器上,否则我可以静态地从最后一台机器上调用时间戳。我希望仅从某个过程获取数据,并且在2016年1月1日之后,其逻辑已在其他查询中运行。
我的查询尝试到目前为止,这将返回所有条目,所以我需要一些东西来减少到最后一个动作:
select UniqueID, TimeStamp, MachineName
from TransactionTable
where ActionPerformed like 'action'
and TimeStamp > '1/1/2016'
group by UniqueID, TimeStamp
order by UniqueId, TimeStamp desc
答案 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