好的,所以我正在尝试编写一些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
答案 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'。