我对此查询有疑问:
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
我的所有数据都包含在查询中指定的日期范围内。 对不起,我不知道怎么在合适的桌子上展示这个,我是新来的......
答案 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 ......
傻傻的我:)。
虽然感谢大家,但帮助总是很难以理解