Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

查询的问题:DCOUNT函数出错

简单人生  发表于:2011-06-13 21:01:05  
复制

想查询出“成绩表”中的男生 女生及格以及不及格的人数,但结果出错,请指教,谢谢

成绩表图

 

查询设计图

 

得出错误结果

 

要求得出这样的结果  性别     及格人数     不及格人数

                      男       2             0

                      女       0             1

 

Top
煮江品茶 发表于:2011-06-13 21:56:42

第三个参数加性别条件:

"分数>=60 and 性别='男'"



王樵民 发表于:2011-06-14 08:45:20

做了一个简单的示例,供参考,课建立两个查询解决这个问题,点击下载此附件

参见“成绩表 查询1”和“成绩表 查询1 查询”

“成绩表 查询1”

SELECT 成绩表.编号, 成绩表.姓名, 成绩表.性别, 成绩表.分数, IIf([分数]>=60,1,0) AS 及格, IIf([分数]<60,1,0) AS 不及格
FROM 成绩表;

“成绩表 查询1 查询”
SELECT DISTINCTROW [成绩表 查询1].性别, Sum([成绩表 查询1].及格) AS 及格人数, Sum([成绩表 查询1].不及格) AS 不及格人数
FROM [成绩表 查询1]
GROUP BY [成绩表 查询1].性别;

成绩表 查询1 查询
性别 及格人数 不及格人数
2 0
0 1



瞿丽忠 发表于:2011-06-14 13:00:39

及格人数: DCount("编号","成绩表","分数>=60 and 性别='" & [性别] & "'")

不及格人数: DCount("编号","成绩表","分数<60 and 性别='" & [性别] & "'")



一过客 发表于:2011-06-14 20:02:50
一个查询就搞定:及格:sum(iif([分数]>=60,1,0));不及格:sum(iif([分数]<60,1,0))点击下载此附件

简单容易 发表于:2011-06-14 22:32:51

各坛友的答案都可行,

煮江品茶瞿丽忠的方法是一样的,而王樵民的答案思路更为清晰,一过客真是熟能生巧,一次搭建!

感谢四位!



zhcosin 发表于:2011-06-15 09:43:58

王樵民用了两个查询实现,其实可以用一个查询实现(在查询的SQL视图下输入下列代码即可,注意不要漏掉末尾的分号):

 

SELECT 性别, SUM(IIF(分数>=60,1,0)) AS 及格人数, SUM(IIF(分数<60,1,0)) AS 不及格人数
FROM 成绩表
GROUP BY 性别;

 

Access的查询设计器创建简单的查询还行,创建复杂的查询就力不从心了,所以如果想深入学习Access,还是要学SQL语言。

 


 



简单容易 发表于:2011-06-15 11:53:15

楼主回复zhcosin

多谢你的关注,经检验,运行结果正确,思路和一过客一样。

王樵民是让初学者明白其中的构建过程,故用了两个查询,以便初学者更容易理解。

王樵民的《ACCESS 2007 数据库开发全书》



总记录:7篇  页次:1/1 9 1 :