Oracle定期选择和更新记录

时间:2017-11-20 21:25:44

标签: sql

我有一个包含多个记录重复状态值的表。

DEVICE    STATUS     CHANGE_DATE
1        1    21.11.2017 14:36
2        1    21.11.2017 15:39

设备状态变化。

  1. 第一个问题是,我想按设备ID选择最后状态为1。
  2. 查询结果将是这样的;

    DEVICE    STATUS     CHANGE_DATE
    1        1       11.11.2017 12:36
    1        1       21.11.2017 14:36
    2        1       21.11.2017 15:39
    
    1. 第二个查询是关于同一结果的更新。如果数据是这样的:
    2. library(poliscidata)
      
      Error: package or namespace load failed for ‘poliscidata’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]):
       there is no package called ‘stringi’.
      

      设备1是旧日期。我想更新一个记录是2天。

      如何创建这些oracle查询?选择并更新旧记录。

1 个答案:

答案 0 :(得分:0)

我很想将这个问题视为过于宽泛。但是,我会回答第一部分:

select t.*
from (select t.*,
             row_number() over (partition by device order by change_date desc) as seqnum
      from t
     ) t
where seqnum = 1;

我认为“更新”应该是一个单独的问题。