SQL计数查询不起作用

时间:2011-10-20 17:52:21

标签: sql ms-access count

我对此查询有疑问:

SELECT Ordre.Objet, Count(Ordre.Objet) AS CompteDeObjet
FROM Ordre INNER JOIN Avis ON Ordre.[Ordre SAP] = Avis.[Ordre SAP]
GROUP BY Ordre.Objet, Avis.[Date Appel], Ordre.Objet
HAVING (((Avis.[Date Appel])>#8/1/2011# And (Avis.[Date Appel])<#10/20/2011#) AND ((Ordre.Objet) Is Not Null));

我使用Access 2003生成的。它应该计算Object列中每种项目的数量,但它只显示每个不同项目的一个计数... 似乎无法弄清楚如何使这项工作。

[编辑]

考虑到前两个答案,我将代码更改为以下内容,但我仍然得到相同的结果:

SELECT Ordre.Objet, Count(Ordre.Objet) AS CompteDeObjet
FROM Ordre INNER JOIN Avis ON Ordre.[Ordre SAP] = Avis.[Ordre SAP]
WHERE (((Avis.[Date Appel])>#8/1/2011# And (Avis.[Date Appel])<#10/20/2011#) AND ((Ordre.Objet) Is Not Null))
GROUP BY Ordre.Objet; 

[编辑#2] 这是我的数据样本:

Ordre SAP Objet

11147212 Simplex

11147214 Simplex

11147215 Simplex

11147216 Simplex

11147225 Simplex

11147240自动等级

11147243

11147247 CANOPY

11147259 Capteur

以下是上次编辑的查询给出的内容:

自动等级1 冠军1 Capteur 1 单纯1

我的所有数据都包含在查询中指定的日期范围内。 对不起,我不知道怎么在合适的桌子上展示这个,我是新来的......

3 个答案:

答案 0 :(得分:2)

查询将为GROUP BY的每个项目提供一行/计数。

您正在分组:

 GROUP BY Ordre.Objet, Avis.[Date Appel], Ordre.Objet

因此,您将获得每个Objet / Date Appel组合的一个cound

答案 1 :(得分:0)

尝试将HAVING子句中的内容移动到WHERE子句。 HAVING过滤了分组的项目,可能会阻止查询正确计算项目。

答案 2 :(得分:0)

好的,所以我弄清楚我的问题是什么:

我有比Orvis更多的Ordres而且并非所有avis都有附加的ordre。我的查询以某种方式只计算附加了Avis的对象(因为JOIN子句?) 所以在测试时,我只是随机地将许多不同的值放在订单表中的随机记录中。碰巧我把其中一个放在Ordres上有相应的Avis ......

傻傻的我:)。

虽然感谢大家,但帮助总是很难以理解