访问查询 - 如何创建一个字段来计算列而不是行的所有匹配记录?
Access Query - How do I create a field that counts all matching records of a column rather than the row?
我不确定如何准确地表达这一点,所以希望我正在尝试做的事情是有意义的。
我在 Access 中有一个交叉表查询,我想要一个字段显示查询结果中与记录中的值匹配的匹配值的总数。例如:
[ID] [Name] [Unit] [Unit_Total]
1 A M1 2
2 B M1 2
3 B M2 1
对于[Unit_Total],我想统计[Unit]中的值在查询结果中出现的总次数。
我觉得这应该很容易做到。我已经尝试构建各种表达式很长一段时间了,但一直无法弄清楚。
select t.ID,
t.Name,
t.Unit,
(select count(*) from [table] t1 where t1.Unit = t.Unit) as Unit_Total
from [table] t
这是一种快速且易读的方法。如果性能是一个问题,您可以聚合 table 然后将其连接回自身,例如:
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
我不确定如何准确地表达这一点,所以希望我正在尝试做的事情是有意义的。
我在 Access 中有一个交叉表查询,我想要一个字段显示查询结果中与记录中的值匹配的匹配值的总数。例如:
[ID] [Name] [Unit] [Unit_Total]
1 A M1 2
2 B M1 2
3 B M2 1
对于[Unit_Total],我想统计[Unit]中的值在查询结果中出现的总次数。
我觉得这应该很容易做到。我已经尝试构建各种表达式很长一段时间了,但一直无法弄清楚。
select t.ID,
t.Name,
t.Unit,
(select count(*) from [table] t1 where t1.Unit = t.Unit) as Unit_Total
from [table] t
这是一种快速且易读的方法。如果性能是一个问题,您可以聚合 table 然后将其连接回自身,例如:
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