Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 通过具有多个时间戳的唯一ID获取最新的表条目_Sql_Oracle - Fatal编程技术网

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

Sql 通过具有多个时间戳的唯一ID获取最新的表条目,sql,oracle,Sql,Oracle,我在Oracle数据库中有一个包含机器事务的表,我需要找到对产品执行最后一次操作的时间 产品由唯一id跟踪,机器动作都有时间戳。该产品不会总是命中每台机器,否则我可以静态调用上一台机器的时间戳。我希望仅从某个流程中获取数据,2016年1月1日之后,该流程的逻辑已经在其他查询中起作用 到目前为止,我的查询尝试如下所示,这将返回所有条目,因此我需要一些东西来减少到最后一个操作: select UniqueID, TimeStamp, MachineName from TransactionTab

我在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

您可以为每个按日期描述排序的唯一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'
或显式调用
,以指定格式模型。