1

似乎我们不能使用Count (Distinct column)MS Access 中的功能。我有以下数据和预期结果,如下所示

寻找可以提供所需结果的 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
4

4 回答 4

1

使用子查询从表中选择不同的值。

在父查询中,对每个类别GROUP BY Person使用单独Count()的表达式。 Count()仅计算非 Null 值,因此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;

我不确定哪些字段可以识别您的唯一值,因此选择了IDCategoryPerson。查询的结果集与您的要求相匹配;SELECT DISTINCT如果它不适合您的实际数据,请更改字段列表。

于 2012-10-04T04:56:54.743 回答
0

在 Microsoft Access 中创建查询时,您可能只想返回不同或唯一的值。查询的属性表中有两个选项,“唯一值”和“唯一记录”:

DISTINCT 和 DISTINCTROW 有时提供相同的结果,但存在显着差异:

DISTINCT DISTINCT 仅检查 SQL 字符串中列出的字段,然后消除重复行。DISTINCT 查询的结果不可更新。它们是数据的快照。

DISTINCT 查询类似于 Summary 或 Totals 查询(使用 GROUP BY 子句的查询)。

另一方面,DISTINCTROW DISTINCTROW 检查正在查询的表中的所有字段,并根据整个记录(而不仅仅是选定的字段)消除重复项。DISTINCTROW 查询的结果是可更新的。

阅读更多...

于 2012-10-04T04:31:02.773 回答
0
select count(column) as guessTable
from
(
    select distinct column from Table
)
于 2015-03-20T10:47:18.637 回答
0

MS Access-Engine 不支持

 SELECT count(DISTINCT....) FROM ...

你必须这样做:

 SELECT count(*) 
 FROM
 (SELECT DISTINCT Name FROM table1)

它的一个小解决方法......你正在计算一个 DISTINCT 选择。

于 2015-03-20T10:59:55.710 回答