首页 > 解决方案 > 消除 Access Query 结果中的重复项

问题描述

我有一个访问数据库,其中包含从我们的事件管理系统导出的记录。我正在尝试解决由于我们计数事件的方式而导致的重复计数问题。只要每个事件都有一个操作员,计数就可以了。我在车辆操作涉及两个操作员的用例或另一个用例中遇到问题,即我们遇到两个操作员相互碰撞的事件。对于任何事件,运营商都会被收取可避免或不可避免的费用。对于任一重复案例的事件,操作员 A 可以被指控为可避免事件,而操作员 B 可以被指控为不可避免。然而,在宏观层面上,我们将其视为一个事件,即使我们在数据库中有两条记录,同时对两个运营商都收费。

样本数据

Incident_Number EmpName IncType Charge_1
1A  Joe     Collision   Avoidable
1B  Tom     Collision   Avoidable
1B  Sue     Collision   Unavoidable
1C  Harry   Collision   Avoidable
1C  John    Collision   Unavoidable
1C  Kathi   Collision   Unavoidable
1D  Larry   Collision   Unavoidable

我希望查询结果的示例

Incident_Number EmpName IncType Charge_1
1A  Joe     Collision   Avoidable
1B  Tom     Collision   Avoidable
1C  Harry   Collision   Avoidable
1D  Larry   Collision   Unavoidable

在试图让它工作时,我尝试了这个测试,但它并没有阻止重复。我们的问题只是我们存储数据的方式吗?我应该在 Charge_1 列上尝试 DISTINCT 吗?

SELECT *
FROM tst2019 as c1 
WHERE Incident_Number <> 
 (SELECT MAX(Incident_Number) FROM tst2019 as c2 
  WHERE c2.charge_1=c1.charge_1);

标签: ms-accessduplicates

解决方案


Gustav,这是我使用您的解决方案的方式:

SELECT 
    Incident_Number, 
    Date_of_Incident, 
    Mode, 
    Incident_Type, 
    charge_1, 
    First(employee_name) AS empname,
    Division
FROM 
    tst2019
GROUP BY 
    Incident_Number, 
    Date_of_Incident, 
    Mode, 
    Incident_Type,
    Charge_1,
    Division;

不过,我确实有一个异常情况,对于缆车的案例,车辆的操作需要两名员工。对于相同的事件编号,查询结果有 1 行表示可避免,1 行表示不可避免。除此之外,这完全按照我想要的方式工作,所以谢谢你的帮助。

最坏的情况是,我总是可以手动检查缆车事故。问题,运行 sql 查询是否有意义,特定于“Avoidables”,然后执行第二个附加查询特定于“Unavoidables”,但是让查询省略在初始“Avoidable”查询中已经存在事件编号的任何结果结果。如果这是可能的,您能否就如何做到这一点提供一些指导?再次感谢您帮助解决此重复问题。


您必须按Incident_Number分组:

SELECT 
    Incident_Number,
    First(EmpName) As Operator,
    IncType,
    Min(Avoidable) As Status
FROM 
    tst2019
GROUP BY
    Incident_Number,
    IncType

请注意,FIRST 只选择“a”运算符,不一定是“first”,因为您的表中没有任何内容定义谁/什么是第一个。


推荐阅读