计算不同的查询MS Access [英] Count distinct query MS Access

查看:82
本文介绍了计算不同的查询MS Access的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

It seems that we can not use Count (Distinct column) function in MS Access. I have following data and expected result as shown below

正在寻找可以提供所需结果的MS Access查询.

Looking for MS Access query which can give required result.

数据

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

推荐答案

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

Use a subquery to select the distinct values from your table.

在父查询中,为GROUP BY Person,并为每个类别使用单独的Count()表达式. Count()仅计算非Null值,因此请使用IIf()为感兴趣的类别返回1,否则返回Null.

In the parent query, GROUP BY Person, and use separate Count() expressions for each category. Count() only counts non-Null values, so use IIf() to return 1 for the category of interest and Null otherwise.

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字段列表与您的实际数据不符,请进行更改.

I was unsure which fields identify your unique values, so chose ID, Category, and Person. The result set from the query matches what you asked for; change the SELECT DISTINCT field list if it doesn't fit with your actual data.

这篇关于计算不同的查询MS Access的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆