我的MAX函数使用出错:GROUP BY子句中不能使用聚合函数问题咨询
问题分析与修正方案
嘿,这个错误很典型!咱们直接说问题出在哪:
你在GROUP BY子句里放了聚合函数MAX(skm_vrecommendations.decno),这是不符合SQL语法规则的。
为什么不行?
GROUP BY的作用是定义分组的维度(也就是普通列),让数据库按照这些列的值把数据分成不同的组;而MAX()这类聚合函数是用来对每个分组计算统计结果的——两者的角色完全不同,聚合函数根本不应该出现在GROUP BY里。
你的需求是「每个cno对应的最大decno」,只需要按cno分组就够了,MAX(decno)会自动帮你计算每个分组里的最大值。
修正后的SQL语句
SELECT skm_vrecommendations.cno, Max(skm_vrecommendations.decno) FROM skm_vrecommendations INNER JOIN skm_voutcome ON (skm_vrecommendations.cno = skm_voutcome.cno) AND (skm_vrecommendations.refdt = skm_voutcome.refdt) AND (skm_vrecommendations.decno = skm_voutcome.decno) WHERE (skm_vrecommendations.reccode = 39) AND (skm_voutcome.visitdt BETWEEN #1/1/2018# AND #1/31/2018#) GROUP BY skm_vrecommendations.cno;
额外小提示
如果你担心结果列名不清晰,也可以给聚合列加个别名,比如Max(skm_vrecommendations.decno) AS max_decno,这样查询结果的可读性会更好。
内容的提问来源于stack exchange,提问作者uk visa
相关产品推荐
相关产品推荐

