比较同一表中最近修改的两行的SQL查询

比较同一表中最近修改的两行的SQL查询,sql,oracle,Sql,Oracle,我正在尝试为以下场景编写SQL查询 这是我桌子的简单版本 ID Value modified Date 1 complete 12/18/2014 3 pending 12/12/2014 2 complete 12/14/2014 2 not started 12/10/2014 1 pending 12/11/2014 3 not st

我正在尝试为以下场景编写SQL查询

这是我桌子的简单版本

ID Value modified Date 1 complete 12/18/2014 3 pending 12/12/2014 2 complete 12/14/2014 2 not started 12/10/2014 1 pending 12/11/2014 3 not started 12/12/2014 2 complete 12/16/2014 1 testing 12/13/2014 3 complete 12/17/2014 我正在尝试获取一个ID列表,该列表对于两个最近修改的日期具有不同的值

例如,在上表中,ID 1的两个最新日期分别为2014年12月18日和2014年12月13日, 该行的对应值是complete和testing,它们不相等,因此将在我的列表中

但是,ID 2将不在列表中,因为2的最近两个修改日期12/14和12/16具有相同的值complete

所以我想得到的结果是

ID Value 1 Complete 3 Complete 我正在使用Oracle数据库

我从过去两天就开始尝试,但从来没有一个查询解决方案出现在这里

任何帮助都将不胜感激。

您可以使用行号和条件聚合来完成此操作:

select id, max(case when seqnum = 1 then value end) as value
from (select t.*, row_number() over (partition by id order by modifieddate desc) as seqnum
      from table t
     ) t
group by id
having max(case when seqnum = 1 then value end) <> max(case when seqnum = 2 then value end);