MS Access中EXTRACT()查询报语法错误,缺失何种运算符?
MS Access按年份统计签到次数的SQL语法问题
问题场景
在MS Access中有一张记录泳池会员签到信息的表tblCheckIn,需要按运营年份统计签到次数(统计每个年份对应的唯一ID数量),原编写的SQL语句如下:
SELECT EXTRACT(YEAR FROM tblCheckIn.[CHECKINTIME]) AS Season, COUNT(tblCheckIn.[ID]) AS Visits FROM tblCheckIn GROUP BY (YEAR FROM tblCheckIn.[CHECKINTIME]);
执行时出现错误:Syntax error (missing operator) in query expression 'EXTRACT(YEAR FROM tblCheckIn.[CHECKINTIME])
问题原因
MS Access使用的Jet/ACE SQL语法不支持标准SQL的EXTRACT(YEAR FROM ...)函数,它有专属的Year()函数用于提取日期字段的年份。同时原GROUP BY子句的写法也不符合Access SQL的要求,必须与SELECT子句中的年份提取表达式保持一致。
修正后的SQL语句
SELECT Year(tblCheckIn.[CHECKINTIME]) AS Season, COUNT(tblCheckIn.[ID]) AS Visits FROM tblCheckIn GROUP BY Year(tblCheckIn.[CHECKINTIME]);
如果需要统计唯一ID的数量(即去重后的签到人数,而非总签到次数),可以改用COUNT(DISTINCT tblCheckIn.[ID]):
SELECT Year(tblCheckIn.[CHECKINTIME]) AS Season, COUNT(DISTINCT tblCheckIn.[ID]) AS UniqueVisits FROM tblCheckIn GROUP BY Year(tblCheckIn.[CHECKINTIME]);
内容的提问来源于stack exchange,提问作者Lei-Lonnie
相关产品推荐
相关产品推荐

