2

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

1 回答 1

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)

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

于 2013-10-31T12:04:45.823 回答