似乎我们无法在MS Access中使用Count (Distinct column)
功能。我有以下数据和预期结果,如下所示
寻找可以提供所需结果的MS Access查询。
数据
ID Name Category Person Office
1 FIL Global Ben london
1 FIL Global Ben london
1 FIL Overall Ben Americas
106 Asset Global Ben london
156 ICICI Overall Rimmer london
156 ICICI Overall Rimmer london
188 UBS Overall Rimmer london
9 Fund Global Rimmer london
预期结果
Person Global_Cnt Overall_Cnt
Ben 2 1
Rimmer 1 2
答案 0 :(得分:1)
使用子查询从表中选择不同的值。
在父查询中GROUP BY Person
,并为每个类别使用单独的Count()
表达式。 Count()
仅计算非空值,因此使用IIf()
为感兴趣的类别返回1,否则返回Null。
SELECT
sub.Person,
Count(IIf(Category = 'Global', 1, Null)) AS Global_Cnt,
Count(IIf(Category = 'Overall', 1, Null)) AS Overall_Cnt
FROM
(
SELECT DISTINCT ID, Category, Person
FROM YourTable
) AS sub
GROUP BY sub.Person;
我不确定哪些字段标识了您的唯一值,因此请选择ID
,Category
和Person
。查询的结果集符合您的要求;如果SELECT DISTINCT
字段列表与实际数据不符,请更改它。
答案 1 :(得分:0)
在Microsoft Access中创建查询时,您可能希望仅返回不同的值或唯一值。查询的属性表中有两个选项,“唯一值”和“唯一记录”:
DISTINCT和DISTINCTROW有时会提供相同的结果,但存在显着差异:
<强> DISTINCT 强> DISTINCT仅检查SQL字符串中列出的字段,然后删除重复的行。 DISTINCT查询的结果不可更新。它们是数据的快照。
DISTINCT查询类似于Summary或Totals查询(使用GROUP BY子句的查询)。
<强> DISTINCTROW 强> 另一方面,DISTINCTROW检查正在查询的表中的所有字段,并根据整个记录(而不仅仅是所选字段)消除重复项。 DISTINCTROW查询的结果是可更新的。
答案 2 :(得分:0)
select count(column) as guessTable
from
(
select distinct column from Table
)
答案 3 :(得分:0)
MS Access-Engine不支持
SELECT count(DISTINCT....) FROM ...
你必须这样做:
SELECT count(*)
FROM
(SELECT DISTINCT Name FROM table1)
它有点解决方法......你在计算DISTINCT的选择。