繁体   English   中英

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

[英]SQL Query to compare two most recently modified row of the same table

我正在尝试为以下情况编写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日,该行的对应值分别为“完成”和“测试”,它们不相等,因此将为在我的清单中。

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

所以我想要得到的结果是

ID   Value  

1    Complete
3    Complete

我正在使用Oracle数据库

自最近两天以来,我一直在尝试,但从未在此展示一个查询解决方案

任何帮助将不胜感激。

您可以使用row_number()和条件聚合来做到这一点:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM