首页 > 解决方案 > 如何在 SQL 中仅从数据库中查询旧数据和重复数据

问题描述

我正在尝试查询我的数据库以仅提取重复/旧数据以写入 excel 中的临时部分(使用将 SQL 传递给数据库的宏)。

目前,我目前仅在 Access 中进行测试,仅过滤掉旧数据。

首先,我试图通过指定的 WorkOrder、RunNumber 和 Row 过滤我的数据库。

下面的代码仅按工单、运行编号和行过滤。...但是当我添加第二个 AND 语句时,SQL 不喜欢;所以这目前不起作用。

SELECT *
FROM DataPoints
WHERE (((DataPoints.[WorkOrder])=[WO2]) AND ((DataPoints.[RunNumber])=6) AND ((DataPoints.[Row]=1)

一旦我弄清楚那部分......

然后,如果只有 1 个具有指定 WorkOrder、RunNumber 和 Row 的条目,那么我想将其过滤掉。(草稿部分不需要它,因为它的数据已经写入我报告的主要部分)

如果有 2 个或多个具有上述条件的条目(WO、RN 和 Row),那么我想根据 RunDate 和 RunTime 过滤掉最新的条目,并且只保留所有较旧的条目。

例如,在下面的剪辑中。我过滤后的查询中剩下的唯一项目将是时间戳为上午 11:47:00 的顶部条目。

示例数据片段.

有没有推荐的命令来完成这个问题?任何想法都是有帮助的。谢谢你。

标签: sqlms-access

解决方案


您需要在代码片段的末尾再添加两个 )。或者您可以在此示例中完全删除括号,MS Access 将在认为必要时将它们重新添加。

MS Access SQL 可能很棘手,因为它不符合标准并且不允许超级复杂的查询,或者它需要一个丑陋的解决方法,比如在尝试连接两个以上的表时有一个括号嵌套的噩梦。

由于这些原因,我建议使用多个 Access 查询来生成结果。


推荐阅读