关于解决 ACCESS中 不支持count(distinct 的问题

af龙行天下 2010-10-21 05:20:25
我有一个表格,如下
考次 学校 姓名 成绩
1 安福一学
1 安福一学
1 安福一学
1 安福二中
1 安福二中
1 安福二中
1 安福三中
1 安福三中
1 安福四中
1 安福四中
1 安福四中
2 安福中学
2 安福中学
2 安福二中
2 安福二中
2 安福二中
2 城关中学
2 城关中学
2 城关中学
3 安福中学
3 安福中学
3 安福三中
3 安福三中
3 安福三中
3 安福二中
3 安福二中
3 安福二中
3 城关中学
3 城关中学
3 城关中学

求统计每次考试的学校种数,如
考次 学校数
1 4
2 3
......


因为 ACCESS中 不支持count(distinct
所以,这个问题,请问怎么实现?
...全文
1174 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
af龙行天下 2010-10-27
  • 打赏
  • 举报
回复
问题,解决了,谢谢这位大师,现在结帖
wwwwb 2010-10-27
  • 打赏
  • 举报
回复
问题1次问完
将INNER JOIN->LEFT JOIN
af龙行天下 2010-10-27
  • 打赏
  • 举报
回复
上面的还是有问题,我要显示 10条记录,但结果只显示3条,也就是学校数为 0 的就没显示,
这个问题,应该怎么解决?
wwwwb 2010-10-27
  • 打赏
  • 举报
回复
select a.*,b.学校数,c.学生数 from (testType a inner join
(SELECT 考次, Count(学校) AS 学校数
FROM (SELECT 考次, 学校 FROM cjdata group by 考次, 学校)
GROUP BY 考次) b on a.编号=b.考次)
inner join
(select 考次,count(*) as 学生数 from cjdata group by 考次) c
on a.编号=c.考次
af龙行天下 2010-10-27
  • 打赏
  • 举报
回复
上面的我试了,很有用,
能不能加一列,显示

编号 考试名称 学校数 学生数
1 第一次考试 4 11
2 第二次考试 3 8
3 第三次考试 4 11
4 第四次考试 0 0
5 第五次考试 0 0
6 第六次考试 0 0
7 第七次考试 0 0
8 第八次考试 0 0
9 第九次考试 0 0
10 第十次考试 0 0
wwwwb 2010-10-27
  • 打赏
  • 举报
回复
select a.*,b.学校数 from testType a inner join
(SELECT 考次, Count(学校) AS 学校数
FROM (SELECT 考次, 学校 FROM cjdata group by 考次, 学校)
GROUP BY 考次) b on a.编号=b.考次

不能使用
SELECT 编号, TestName, DCOUNT('*','cjdata','考次=' & 编号) AS 学校数
FROM testType;
af龙行天下 2010-10-27
  • 打赏
  • 举报
回复
cjdata 表格,如下
考次 学校 姓名 成绩
1 安福一学 张三 78
1 安福一学 李四 97
1 安福一学 王五 66
1 安福二中 刘七 79
1 安福二中
1 安福二中
1 安福三中
1 安福三中
1 安福四中
1 安福四中
1 安福四中
2 安福中学
2 安福中学
2 安福二中
2 安福二中
2 安福二中
2 城关中学
2 城关中学
2 城关中学
3 安福中学
3 安福中学
3 安福三中
3 安福三中
3 安福三中
3 安福二中
3 安福二中
3 安福二中
3 城关中学
3 城关中学
3 城关中学

testType 表如下:

编号 testName
1 第一次考试
2 第二次考试
3 第三次考试
4 第四次考试
5 第五次考试
6 第六次考试
7 第七次考试
8 第八次考试
9 第九次考试
10 第十次考试

求统计每次考试的学校种数,如
编号 考试名称 学校数
1 第一次考试 4
2 第二次考试 3
3 第三次考试 4
4 第四次考试 0
5 第五次考试 0
6 第六次考试 0
7 第七次考试 0
8 第八次考试 0
9 第九次考试 0
10 第十次考试 0


请各位修改一下这个句子,让它直正实现这个功能

SELECT 编号, TestName, DCOUNT('*','cjdata','考次=' & 编号) AS 学校数
FROM testType;
af龙行天下 2010-10-27
  • 打赏
  • 举报
回复
我根据上楼的写法,改成了
SELECT 编号, TestName, DCOUNT('*','cjdata','考次=' & 编号) AS 学校数
FROM testType;

但学校数是 3000多,怎么回事,应该是
同一次考试,相同的学校,只能算一次,不能重复计算
WWWWA 2010-10-26
  • 打赏
  • 举报
回复
SELECT *,DCOUNT('*','cjdata','考次="' & 名称 & '"') FROM testType
af龙行天下 2010-10-26
  • 打赏
  • 举报
回复
那可能是我系统有问题,我装过系统看看,
另外,我还有个问题

就是 mdb 里还有一个表,
表名: testType
字段:
编号 名称 学校数
1 第一次考试 0
2 第二次考试 0
3 第三次考试 0
4 第四次考试 0
5 第五次考试 0
6 第六次考试 0
7 第一次考试 0
8 第二次考试 0
9 第三次考试 0
10 第四次考试 0

现在我要显示这个表,
但“学校数”这个字段,我想通过 cjdata 这个表,获得,
有没有办法实现?
WWWWA 2010-10-26
  • 打赏
  • 举报
回复
就是用你的MDB测试,在查询中COPY 上述SQL语句,再新建查询,PASTE即可
af龙行天下 2010-10-26
  • 打赏
  • 举报
回复
怎么我这里还是出错,上面这位朋友,下载我的 mdb 文件运行了不?
我这里还是提示 :
Microsoft Jet 数据库引擎找不到输入表或查询 'select DISTINCT 考次,学校 from cjdata :'。确定它是否存在,以及它的名称的拼写是否正确。
WWWWA 2010-10-26
  • 打赏
  • 举报
回复
SELECT Temp.考次, Count(学校) AS 学校数
FROM (SELECT DISTINCT 考次, 学校 FROM cjdata) AS Temp
GROUP BY Temp.考次;

or
SELECT Temp.考次, Count(学校) AS 学校数
FROM (SELECT 考次, 学校 FROM cjdata group by 考次, 学校) AS Temp
GROUP BY Temp.考次;
af龙行天下 2010-10-26
  • 打赏
  • 举报
回复
我己经把我的表上传到了www.access911.net/csdn
请各位高手帮我看一下里面的查询语句,有什么问题
下载地址:
http://access911.net/csdn/FileDescription.asp?mdb=2010-10-26&id=26
af龙行天下 2010-10-26
  • 打赏
  • 举报
回复
下载地址:
http://access911.net/csdn/FileDescription.asp?mdb=2010-10-26&id=26
WWWWA 2010-10-26
  • 打赏
  • 举报
回复
考次如为数字型
SELECT *,DCOUNT('*','cjdata','考次=' & 编号 )
FROM testType;
af龙行天下 2010-10-26
  • 打赏
  • 举报
回复
运行
SELECT *,DCOUNT('*','cjdata','考次="' & 名称 & '"') FROM testType
出现输入变量:名称

我改成
SELECT *,DCOUNT('*','cjdata','考次="' & 编号 & '"')
FROM testType;
后,显示,数据类型不匹配

wwwwb 2010-10-25
  • 打赏
  • 举报
回复
你的表名是否存在?
or
上传你的MDB到www.access911.net/csdn
只要有问题的表、查询,用WINRAR压缩
af龙行天下 2010-10-25
  • 打赏
  • 举报
回复
以上都出现同样的问题,
因为我是在 access 2003 下,
是不是版本有问题?
af龙行天下 2010-10-25
  • 打赏
  • 举报
回复
运行3楼结果如下:


Microsoft Jet 数据库引擎找不到输入表或查询 'select DISTINCT 考次,学校 from cjdata:'。确定它是否存在,以及它的名称的拼写是否正确。
加载更多回复(6)

7,731

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧