访问查询 - 如何创建一个字段来计算列的所有匹配记录而不是行?

时间:2017-11-02 18:45:55

标签: ms-access expression formula

我不确定如何准确地说出这一点,所以希望我尝试做的事情会有意义。

我在Access中有一个交叉表查询,我想要一个字段来显示查询结果中与记录中的值匹配的匹配值的总数。例如:

 [ID]       [Name]     [Unit]     [Unit_Total]
   1          A          M1           2
   2          B          M1           2
   3          B          M2           1

对于[Unit_Total],我想计算查询结果中[Unit]中的值出现的总次数。

我觉得这应该很容易做到。我已经尝试了很长一段时间来构建各种表达方式,但是还没有能够解决它。

1 个答案:

答案 0 :(得分:1)

select t.ID,
       t.Name,
       t.Unit,
       (select count(*) from [table] t1 where t1.Unit = t.Unit) as Unit_Total
from [table] t

这是快速可读的方式。如果需要考虑性能,您可以聚合表,然后将其连接回自身,如:

select t.ID,
       t.Name,
       t.Unit,
       t2.Unit_Total
from [table] t
join (
    select t.Unit, count(*) as Unit_Total
    from [table] t1
    group by t.Unit
) t2
    on t2.Unit = t.Unit