我正在寻求以下方案的帮助:
我有一个SQL Server数据库,带有一个存储历史数据的表.例如,让我们使用以下作为样本集.
CAR, SERVICE DATE, FINDINGS
1234, 21/01/2001, Fuel Filter
1234, 23/09/2009, Oil Change
1234, 30/09/2015, Tyres
3456, 30/09/2015, Clutch
我希望从以下示例中恢复显示在给定日期引入的任何汽车的服务的结果,例如2015年9月30日,但只有在过去换油.
该查询只会带回:
1234, 30/09/2015, Tyres
因为它是那个日期唯一的汽车,以前是换油的服务.
任何帮助将不胜感激.
最佳答案 使用
EXISTS条款:
SELECT cur.car,
cur.[service date],
cur.findings
FROM tablename cur
WHERE cur.[service date] = @mydate
AND EXISTS (
SELECT 1
FROM tablename past
WHERE past.car = cur.car
AND past.[service date] < cur.[service date]
AND past.findings = 'oil change'
)