我正在更新一个大型现有项目,该项目主要是使用Access中的宏编辑器创建的。如果我必须将其转换为vba并使用SQl,我对此持开放态度,但如果可能的话,我想坚持尽可能地保持现有结构。 有一系列的Select查询。一个主查询调用其他查询以提取一些数据。我认为这些都是无关紧要的,可以用列的字段中的正确表达式替换
这是我要从中提取的表类型的示例
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: DCount("Students", "Status", "Status = 'Enrolled'")
这将输出所有一般注册学生的总数。我不知道DCOUNT是否可以仅选择特定班级的注册学生
我摆弄了Count()函数,但是我想我只是缺少对该字段期望值的理解,因为它根本没有用。 再次,如果我必须转到VBA,我会尝试,但我想尝试在该领域解决这个问题。任何帮助将不胜感激:)
按预期工作!
答案 0 :(得分:2)
您可以进行条件聚合:
select class,
sum(iif(Status = 'Enrolled', 1, 0)) as Enrolled,
sum(iif(Status = 'Dropped', 1, 0)) as Dropped
from Students s
group by class;