如何在MS Access中查询两车正面碰撞事故对应的所有关联行
解决方案
核心逻辑说明
- 自关联时通过
v1.VehicleID < v2.VehicleID避免同车自身关联,同时消除A匹配B、B匹配A的重复结果 - 先通过子查询筛选出仅涉及2辆车的事故,缩小匹配范围
- 匹配同一事故下两辆车碰撞位置均为
Front的条件
参考SQL代码
SELECT v1.AccidentID, v1.VehicleID AS Vehicle1_ID, v1.PointOfImpact AS Vehicle1_ImpactPoint, v2.VehicleID AS Vehicle2_ID, v2.PointOfImpact AS Vehicle2_ImpactPoint -- 可补充其他需要返回的业务字段 FROM VehiclesAccSummary v1 INNER JOIN VehiclesAccSummary v2 ON v1.AccidentID = v2.AccidentID AND v1.VehicleID < v2.VehicleID -- 避免自身关联和重复匹配 WHERE v1.PointOfImpact = 'Front' AND v2.PointOfImpact = 'Front' AND v1.AccidentID IN ( -- 子查询筛选仅涉及2辆车的事故 SELECT AccidentID FROM VehiclesAccSummary GROUP BY AccidentID HAVING COUNT(DISTINCT VehicleID) = 2 )
字段适配说明
如果你的表中车辆唯一标识字段名不是VehicleID、事故唯一标识字段名不是AccidentID,替换为实际使用的字段名即可,返回结果不会出现自身关联的无效数据,也不会有重复的两两匹配记录。
内容的提问来源于stack exchange,提问作者IronHide
相关产品推荐
相关产品推荐

