我有一个表格,里面有关于车辆和在这些车辆上发生的事件的信息。例如:
VehicleEvent
VehicleRefNum | EventTypeCode | EventDate
1 | OutOfService | 2017-06-28
2 | EngineRepair | 2016-05-15
3 | OutOfService | 2016-04-02
4 | OtherRepair | 2017-07-21
1 | ReturnToService | 2017-07-01
5 | NewToService | 2017-07-27
6 | OutOfService | 2017-05-15
3 | ReturnToService | 2016-04-21
1 | OutOfService | 2017-07-09
1 | ReturnToService | 2017-07-11
我希望返回每个车辆的最新ReturnToService的列表,如果车辆有一个,否则我想忽略它。
Ex结果:
VehicleRefNum | EventTypeCode | EventDate
3 | ReturnToService | 2016-04-21
1 | ReturnToService | 2017-07-11
看起来我需要一个子查询作为WHERE子句,但我真正需要的是一些帮助。谢谢!
编辑后添加:
Select VehicleRefNum, EventTypeCode, EventDate
From VehicleEvent
where VehicleRefNum = 1
and EventDate = Select max(EventDate) from VehicleEvent)
将工作,但只给我一半的解决方案,我正在寻找。我需要一个查询,将扩大与更多的车辆和事件。
发布于 2017-07-28 04:04:03
试试这个:
SELECT VehicleRefNum, EventTypeCode, MAX(EventDate) EventDate
FROM VehicleEvent
WHERE EventTypeCode = 'ReturnToService'
GROUP BY VehicleRefNum, EventTypeCode
WHERE
会将结果限制为您感兴趣的EventTypeCode
。然后,您希望将结果汇总到常见的VehicleRefNum / EventTypeCode
组合上,就像使用GROUP BY
所做的那样,并且只看到每个组合的MAX(EventDate)
。
https://stackoverflow.com/questions/45359898
复制相似问题