Sql 通过具有多个时间戳的唯一ID获取最新的表条目
我在Oracle数据库中有一个包含机器事务的表,我需要找到对产品执行最后一次操作的时间 产品由唯一id跟踪,机器动作都有时间戳。该产品不会总是命中每台机器,否则我可以静态调用上一台机器的时间戳。我希望仅从某个流程中获取数据,2016年1月1日之后,该流程的逻辑已经在其他查询中起作用 到目前为止,我的查询尝试如下所示,这将返回所有条目,因此我需要一些东西来减少到最后一个操作:Sql 通过具有多个时间戳的唯一ID获取最新的表条目,sql,oracle,Sql,Oracle,我在Oracle数据库中有一个包含机器事务的表,我需要找到对产品执行最后一次操作的时间 产品由唯一id跟踪,机器动作都有时间戳。该产品不会总是命中每台机器,否则我可以静态调用上一台机器的时间戳。我希望仅从某个流程中获取数据,2016年1月1日之后,该流程的逻辑已经在其他查询中起作用 到目前为止,我的查询尝试如下所示,这将返回所有条目,因此我需要一些东西来减少到最后一个操作: select UniqueID, TimeStamp, MachineName from TransactionTab
select UniqueID, TimeStamp, MachineName
from TransactionTable
where ActionPerformed like 'action'
and TimeStamp > '1/1/2016'
group by UniqueID, TimeStamp
order by UniqueId, TimeStamp desc
您可以为每个按日期描述排序的唯一ID生成序列:
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
请阅读并回答您使用的答案?博士后?Oracle?Oracle数据库。我无法格式化表格,使其以块形式显示,因此我认为图片总比没有好。我的线路回线一直丢失或双倍间隔。感谢您的编辑。
'1/1/2016'
不是时间戳
而是字符串文字-Oracle将尝试使用to_TIMESTAMP
将其隐式转换为匹配的数据类型,并使用NLS_TIMESTAMP_FORMAT
会话参数作为格式模型。如果不匹配,或者更糟的是,在以后的日期更改,则查询将失败。最好使用时间戳文字timestamp'2016-01-01 00:00:00'
或显式调用,以指定格式模型。