MS Access查询报错:Sum表达式未包含在聚合函数中
解决Access SQL聚合函数错误的方案
嘿,刚从Excel VBA转Access确实会遇到这种语法差异问题,别担心,这个错误其实很常见,我来帮你捋清楚:
错误原因分析
你遇到的提示You tried to execute a query that does not include the specified expression ... as part of an aggregate function,核心问题是Access的聚合查询要求所有非聚合字段必须出现在GROUP BY子句中。
你在SELECT里用了Sum([FYF]![Value])这个聚合函数,但FYF.ACNT_CODE和FYF.[Team code]这两个字段没有被分组,数据库不知道该按什么维度来计算总和——就像Excel透视表你得选行标签才能汇总数值一样,Access SQL需要你明确写出分组依据。
修正后的完整SQL代码
我把你的代码补全并加上了GROUP BY子句,你可以参考:
SELECT FYF.ACNT_CODE, FYF.[Team code], Sum([FYF]![Value])*(1+[IncreaseAssumptions]![Amount]) AS [Year 1 Cost] INTO [Year 1 costs] FROM FYF INNER JOIN (SunAccounts INNER JOIN IncreaseAssumptions ON SunAccounts.IncreaseType = IncreaseAssumptions.IncreaseType) ON FYF.ACNT_CODE = SunAccounts.ACNT_CODE -- 这里假设FYF和SunAccounts通过ACNT_CODE关联,可根据实际调整 GROUP BY FYF.ACNT_CODE, FYF.[Team code], IncreaseAssumptions.Amount -- Amount出现在非聚合计算中,需加入GROUP BY
额外注意事项
- 确保所有JOIN的关联字段正确,我补的
FYF.ACNT_CODE = SunAccounts.ACNT_CODE只是示例,要根据你的实际表结构调整 - 如果
IncreaseAssumptions.Amount是全局统一值(不随分组变化),可以考虑单独查询后用变量代入,或者确认它在GROUP BY里不会破坏分组逻辑 - Access SQL对带空格、特殊字符的字段名敏感,记得用方括号
[]包裹,这点你已经做得很规范了
内容的提问来源于stack exchange,提问作者Johnny C
相关产品推荐
相关产品推荐

