Sql Oracle:将列值与以前的记录进行比较

Sql Oracle:将列值与以前的记录进行比较,sql,oracle,Sql,Oracle,我有一个由函数加载的Oracle表——每当它发现“LOW_MEMORY”处于最佳状态时,它就会在LOW_mem_timestamp列中添加systimestamp +----------+-------------------+-------+-------------------------------+ | device_id| best_status | job_id| low_mem_timestamp | +----------+----------

我有一个由函数加载的Oracle表——每当它发现“LOW_MEMORY”处于最佳状态时,它就会在LOW_mem_timestamp列中添加systimestamp

+----------+-------------------+-------+-------------------------------+
| device_id| best_status       | job_id| low_mem_timestamp             |
+----------+-------------------+-------+-------------------------------+
| 715016   | OPERATION_FAILURE | 511008|(null)                         |
| 715009   | LOW_MEMORY        | 511008|10-MAY-17 11.13.22.143122000 AM|
| 715014   | DOWNLOAD_COMPLETE | 740004|(null)                         |
| 941015   | LOW_MEMORY        | 740004|10-MAY-17 11.13.22.143122000 AM|
+----------+-------------------+-------+-------------------------------+
在此之后,我有另一个表,我想在其中记录上表的更改

当任何设备id的low_mem_时间戳更改时,如:

  • 如果它有时间戳,并且现在更新为“null”,那么它应该添加“1”
  • 如果它有空值并更新为时间戳,则为“0”
  • 输出表:

    条件:

  • 设备id='715009'最佳状态从“低内存”移动到“更新延迟”,然后低内存时间戳更新为“空”,然后低内存时间戳应为“1”
  • 设备\u id='715014'最佳状态从“下载完成”移动到“内存不足”,然后将内存不足时间戳更新为某个时间戳“任意时间戳”,然后内存不足时间戳应为“0”
  • 设备\u id='941015'最佳状态保持不变,未更新,则低内存时间戳应为“NA”
  • 然后在我的最终表格中,输出应该是

      +----------+-------------------+-------+---------------+
        | device_id| best_status       | job_id| low_mem_toggle|
        +----------+-------------------+-------+---------------+
        | 715009   | UPDATE_DEFERRED   | 511008|1              |
        | 715014   | LOW_MEMORY        | 740004|0              |
        | 941015   | LOW_MEMORY        | 740004|NA             |
        +----------+-------------------+-------+---------------+
    
    请建议使用sql查询来实现此功能


    提前感谢。

    向我们展示数据库模式、示例数据和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。'如果它有时间戳,现在更新为“null”,那么我想要“1”-您想要1在哪个字段中?可能您想要Trigger请查看更新的详细信息