在ACCESS中统计CONO列不同值数量并插入单表的SQL需求
Access 数据库统计指定值出现次数的解决方案
我明白你在Access里用多个WHERE子句统计这类数据时的困扰,其实不用拆分多个WHERE,用Access支持的IIF函数配合聚合函数就能一次性搞定。
先明确你的需求:
原始数据(假设表名为你的表名):
FLAG CONO MMS001 100 MMS001 100 MMS001 300 MMS001 700 MMS001 700 MMS001 700
想要得到的统计结果:
NB_ROWS NB_100 NB_300 NB_700 NB_800 6 2 1 3 0
直接用下面的SQL语句就能实现,我给你拆解下逻辑:
COUNT(*)统计总记录数,对应NB_ROWSSUM(IIF(CONO = 目标值, 1, 0))是核心:每遇到符合条件的CONO就计1,否则计0,求和后就是该值的出现次数。Access里没有CASE WHEN,所以用IIF来做条件判断。
完整SQL代码:
SELECT COUNT(*) AS NB_ROWS, SUM(IIF(CONO = 100, 1, 0)) AS NB_100, SUM(IIF(CONO = 300, 1, 0)) AS NB_300, SUM(IIF(CONO = 700, 1, 0)) AS NB_700, SUM(IIF(CONO = 800, 1, 0)) AS NB_800 FROM 你的表名; -- 记得把这里替换成你实际使用的表名
小提示:如果你的CONO字段是文本类型(而非数字类型),记得把判断条件里的数值改成字符串形式,比如IIF(CONO = '100', 1, 0),不然会出现统计错误。
内容的提问来源于stack exchange,提问作者Hich
相关产品推荐
相关产品推荐

