MS Access - 在一个查询中,计算另一个查询中具有特定值的记录数

问题描述

我在 MS Access 中有 2 个查询(QueryA、QueryB)。他们每个人都有一些其他人没有的记录。有一个字段可以用来检查它,称为 UniqueID。两个查询都有这个字段(从技术上讲,它不是完全唯一的,也不是主键,但我认为它与我的问题无关)。

我通常在 Excel 中做的是使用 COUNTIF 函数计算 QueryA 中有多少具有此特定 UniqueID 的记录/行。所以我会在 Excel 中的 QueryB 选项卡上:

=countif(QueryA!A:A,[@UniqueID])

Excel 中的 QueryB 选项卡:

--------------------------------------------
UniqueID | Instances of UniqueID in QueryA |
12341    | 2                               |
44444    | 1                               |
66666    | 0                               | 

所以我知道在 QueryA 选项卡/工作表中有 2 行 UniqueID 为 12341,44444 的 1 个实例,UniqueID 66666 的 NO 实例

所以我想在我的 Access QueryB 中添加实例字段(以检查 QueryA 中每个 UniqueID 记录有多少条记录(如果有)。

快速谷歌显示 DCount 可能是我所追求的,但我正在努力引用查询。所以在 QueryB 中,我已将字段/列添加到我的查询中:

Instances: DCount([UniqueID],[QueryA],[UniqueID]=[UniqueID])

这显然是错误的,但不知道该怎么做。谢谢

我不想执行聚合函数“计数”,因为此查询中有更多字段,因此我不能仅按 UniqueID 对其进行分组。

解决方法

应该查看有关域聚合函数的 MS 文档。将对象引用括在引号中并连接动态参数。

Instances: DCount("*","[QueryA]","[UniqueID]=" & [UniqueID])

或者构建一个聚合查询,通过 UniqueID 对 QueryA 进行计数并将该查询加入到 QueryB。