ms-access - 消除 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);
解决方案
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”,因为您的表中没有任何内容定义谁/什么是第一个。
推荐阅读
- azure - Microsoft.Azure.Mobile 客户端 - 使用自定义 IMobileServiceSyncHandler 处理服务器错误 - Xamarin Forms
- oracle - oracle表上的ROWID
- javascript - jQuery dataTable 错误无法读取未定义的属性“mData”
- php - 如何循环 PHP 的 PDO 绑定参数
- mysql - 为什么MYSQL将列标识为表?
- linux - 使用命令行按 key=value 字段对日志文件进行排序
- python - 找不到名字芹菜
- java - 在 web.xml cookie-config 中为 Tomcat 定义 Same-site cookie
- python - 如何通过 cython 将 numpy 数组列表传递给 c++
- c# - 使用 LINQ 的 Where 从列表中选择