SQL查询以检查表中的2条记录,如果特定值已更改

问题描述 投票:0回答:1

我有一个包含以下数据的表:

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点记录的列表。预先感谢!

sql compare record
1个回答
0
投票

如果数据库支持,则可以使用窗口函数:

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
© www.soinside.com 2019 - 2024. All rights reserved.