【问题标题】:ms access counting occurences of a value in a column grouped by values in another columnms 访问计数按另一列中的值分组的列中值的出现次数
【发布时间】:2019-03-23 11:44:08
【问题描述】:

我正在更新一个主要使用 Access 中的宏编辑器创建的大型现有项目。如果我必须将其转换为 vba 并使用 SQl,我对此持开放态度,但如果可能的话,我想尽可能地保持现有结构。 有一系列选择查询。一个主要查询调用其他查询来提取一些数据。我认为这些是无关紧要的,可以用列字段中的正确表达式替换

这是我从中提取的表类型的示例

Table: Students
ID | Class   | Status
1  | English | Enrolled
2  | Math    | Enrolled
3  | English | Dropped
4  | History | Enrolled
5  | English | Dropped
6  | English | Dropped
7  | Math    | Dropped

我希望选择查询显示的是

Select Query: Class Report
    Class   | Enrolled | Dropped
    English |    1     |   3
    Math    |    1     |   1
    History |    1     |   0

我遇到的问题是 Enrolled Column 中的表达式,用于在查询中显示时将计数从 Students 表中分离到特定的 Class。 我为 Enrolled 尝试过的表达式是:

Enrolled: DCount("Students", "Status", "Status = 'Enrolled'")

这会输出一般注册的所有学生的总数。我不知道 DCOUNT 是否可以只选择特定课程的注册

我已经摆弄了 Count() 函数,但我想我只是错过了对该字段期望的理解,因为它根本没有工作。 再次,如果我必须搬到 VBA 我会,但我想尝试在那个领域解决这个问题。任何帮助将不胜感激:)

编辑 这是我的设计视图现在的样子以及答案建议之一

按预期工作!

【问题讨论】:

    标签: sql ms-access select


    【解决方案1】:

    你可以做条件聚合:

    select class, 
           sum(iif(Status = 'Enrolled', 1, 0)) as Enrolled,
           sum(iif(Status = 'Dropped', 1, 0)) as Dropped
    from Students s
    group by class;
    

    【讨论】:

    • 设计视图中的字段框是否在 ms 访问 Select 查询中接受完整的 SQL 语句?
    • 当我将sum(iif(Status = 'Enrolled', 1,0)) 放入字段并将总计字段设置为表达式时。我得到与我的 DCOUNT 运行相同的结果,它只计算 Enrolled 的每个实例,而不考虑类。
    • 创建一个新查询,将其切换到 SQL 视图,粘贴到 Yogesh 给您的 SQL 文本中,然后运行它。之后,您可以将查询切换到设计视图,以查看 Access 如何在设计网格列中显示 sum 表达式。
    • 很好的建议。刚刚让它工作得很好。用工作设计视图更新了我的问题,这样人们就可以看到以这种方式应用时的样子。
    猜你喜欢
    • 2018-11-14
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多