SQL - 比较同一列中的多个值?

时间:2013-10-31 12:02:53

标签: sql

好的,所以我正在尝试编写一些SQL,我不知道如何解决这种情况。我有一张类似下面的表格。基本的想法是我需要获取处于“H”状态的记录(足够简单),但我需要排除处于“H”状态的记录并在以后转移到“A”状态日期。

理想情况下,结果应该只返回最后两个记录,ID 03和04.你们会怎么做?

ID     STATUS     STAT_DATE
01       A        05/01/2013
01       H        05/01/2012
02       A        12/01/2013
02       H        12/01/2012
03       H        03/01/2009
04       H        02/01/2008

1 个答案:

答案 0 :(得分:1)

你可以这样做:

select *
from t t1
where status='H' and not exists(
    select * 
    from t t2 
    where t1.id=t2.id and t2.status='A' and t2.stat_date > t1.stat_date)

这将为您提供表t的所有条目,状态='H',其中t中没有条目具有相同的id,更晚的日期和状态='A'。