如何编写Access SQL查询获取指定分组维度的最大AIR结果表数据
Access数据库按维度取最大AIR值查询方案
基础信息
- 需求:从存储录取分配数据的Access源表中提取字段,生成每个「分配院校+课程+分配类别」组合下最高AIR值的结果表
- 源表样例:

- 期望结果样例:

原有SQL错误点
之前编写的语句无法得到正确结果,核心问题如下:
- 带空格的字段名未做转义:Access中名称含空格的字段/表需要用方括号
[]包裹,否则会触发语法错误,比如alloted category必须写成[alloted category] - 聚合函数搭配错误:使用
MAX(AIR)取最大值时,必须搭配GROUP BY指定分组维度,否则只会返回全表最大AIR值,无法按院校、课程、类别分别统计 - 存在无效恒真条件:
allotedinstitute = allotedinstitute这类字段等于自身的判断是永远成立的冗余条件,没有实际过滤作用,不需要保留 - 表名使用保留字:
table是SQL通用保留字,不能直接作为表名写在语句中,需要替换为实际表名,或用方括号包裹
正确查询语句
将语句中的你的实际表名替换为你数据库里对应的源表名称,直接在Access查询编辑器中运行即可:
SELECT MAX(AIR) AS 对应组合最高AIR, allotedinstitute, course, [alloted category] FROM 你的实际表名 GROUP BY allotedinstitute, course, [alloted category];
补充提示:如果你的源表名称本身就是
table,需要把FROM子句后的表名写成[table],否则会报语法错误。
内容的提问来源于stack exchange,提问作者Rohan Vilaspure
相关产品推荐
相关产品推荐

