日期:2011-09-02  浏览次数:20930 次

Access中分组统计的实例

整理自:http://expert.csdn.net/Expert/topic/2727/2727523.xml?temp=.1140711

online 表下有字段:
描述:用户名 版本 是否注册
字段:usr_name ver isreg
现表中有以下记录:
aaa cn true
bbb cn false
ccc en true
ddd fr true

结果要求:查询每个版本的注册用户和未注册用户的数目,得出如下结构:
版本 注册数量  未注册
cn 1 1
en 1 0
fr 1 0

请教在 Access 2000 环境下 SQL 语句的写法

困扰几天终于解决:

1. MS SQL SERVER 2000中的一种方式:
select ver as 版本, sum(case when isreg=true then 1 else 0 end) as 注册数量, sum(case when isreg=false then 1 else 0 end) as 未注册数量 from online group by 版本

2. Access 2000下测试通过:
SELECT DISTINCT ver as 版本, (SELECT COUNT(*) FROM online WHERE ver=m.ver and isreg=TRUE) AS 注册数量, (SELECT COUNT(*) FROM online WHERE ver=m.ver and isreg=FALSE) AS 未注册数量
FROM online AS m