仅返回历史记录表中的最大EventDate

时间:2017-07-27 19:54:06

标签: sql sql-server

我有一张表格,上面有关于这些车辆上发生的车辆和事件的信息。 EX:

v<movement>c<functionName>(<strg>R")<esc>

VehicleEvent

如果车辆有一辆,我希望返回每辆车最近的ReturnToService列表,否则我想忽略它。

结果:

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                                       

看起来我需要的是一个子查询作为WHERE子句,但我真正需要的是一些帮助。谢谢!

编辑添加:

VehicleRefNum | EventTypeCode    | EventDate                      
      3       | ReturnToService  | 2016-04-21                              
      1       | ReturnToService  | 2017-07-11                

会起作用但只给我一半我正在寻找的解决方案。我需要一个可以扩展更多车辆和事件的查询。

1 个答案:

答案 0 :(得分:3)

试试这个:

SELECT VehicleRefNum, EventTypeCode, MAX(EventDate) EventDate
FROM VehicleEvent
WHERE EventTypeCode = 'ReturnToService'
GROUP BY VehicleRefNum, EventTypeCode

WHERE会将结果限制为您感兴趣的EventTypeCode。然后,您希望将结果推广到常用的VehicleRefNum / EventTypeCode组合上使用GROUP BY,并且仅查看每个MAX(EventDate)