Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access count查询未生成所需的结果_Ms Access - Fatal编程技术网

Ms access MS Access count查询未生成所需的结果

Ms access MS Access count查询未生成所需的结果,ms-access,Ms Access,我有一个表tblExam,显示考试数据分数,设计如下: 考试名称:String 分数:number最近 基本上,在我的情况下,当分数低于0.695的特定数值时,我试图通过考试名称来提取记录 我使用以下语句获得结果: SELECT DISTINCTROW tblExam.name, Count(tblExam.name) AS CountOfName FROM tblExam WHERE (((tblExam.Score)<0.695)) GROUP BY tblExam.name; 计数

我有一个表tblExam,显示考试数据分数,设计如下:

考试名称:String 分数:number最近

基本上,在我的情况下,当分数低于0.695的特定数值时,我试图通过考试名称来提取记录

我使用以下语句获得结果:

SELECT DISTINCTROW tblExam.name, Count(tblExam.name) AS CountOfName
FROM tblExam WHERE (((tblExam.Score)<0.695))
GROUP BY tblExam.name;
计数为0和任何分数高于0.695的考试都不会显示。我想要的是这样的:

Exam Name     count  
firstExam       2  
secondExam      1  
thirdExam       3  
fourthExam      0  
fifthExam       0  
sixthExam       2  
.  
..  
.etc...  

我希望我在这里讲得有道理。我想我需要某种左连接来显示所有的考试名称,但我无法想出正确的语法。

我是否检测到矛盾?查询调用结果0.695。也许我不明白。这是否为您提供了您想要的:

SELECT DISTINCTROW tblExam.ExamName, Count(tblExam.ExamName) AS CountOfExamName
FROM tblExam
WHERE (((tblExam.Score)<0.695 Or (tblExam.Score)>0.695))
GROUP BY tblExam.ExamName;

似乎您希望显示所有名称组,并且在每个组中,分数计数<0.695。因此,我认为应该将<0.695从WHERE移到Count表达式,实际上删除WHERE子句

选择 e、 名字, CountiLife.分数<0.695,1,作为CountOfName为空 从tblExam作为e 按e.name分组; 这是因为Count只计算非空值。如果看起来更清楚,您可以使用Sum而不是Count:

SumiLife.得分<0.695,1,0作为CountOfName
注意:DISTINCTROW在分组查询中没有用处,因为分组使得没有它的行是唯一的。因此,我从查询中删除了DISTINCTROW。

您的解决方案非常适合我的需要,并且比我最终找到的解决方案更好、更简单:选择DISTINCTROW e.name,NZee.numofilure,0作为tblExam中的numberofilures AS e LEFT JOIN选择DISTINCTROW name,Countname作为tblExam中的numofilure WHERE Score
SELECT DISTINCTROW tblExam.ExamName, Count(tblExam.ExamName) AS CountOfExamName
FROM tblExam
WHERE (((tblExam.Score)<0.695 Or (tblExam.Score)>0.695))
GROUP BY tblExam.ExamName;