我有一个包含以下数据的表:
Date, Id, hash, Timestamp
---- -- ------ ---------
2020-05-21 001 abc123 07:00am
2020-05-21 001 abc123 08:00am
2020-05-21 001 def456 09:00am
2020-05-21 002 dddddd 07:00am
2020-05-21 002 dddddd 08:00am
2020-05-21 002 dddddd 09:00am
2020-05-21 003 222222 07:00am
2020-05-21 003 qqqwww 08:00am
2020-05-21 003 qqqwww 09:00am
我需要一个查询,该查询将检查最新记录(上午9点记录),并将它们与为该ID插入的先前记录(上午8点记录)进行比较,并检查哈希值是否不同。只需要具有更改的哈希值的上午9点记录的列表。预先感谢!
如果数据库支持,则可以使用窗口函数:
select t.*
from (
select
t.*,
row_number() over(partition by id order by timestamp desc) rn,
lag(hash) over(partition by id order by timestamp) lag_hash
from mytable t
) t
where rn = 1 and hash <> lag_hash