从我在论坛中找到的内容来看,我的WHERE子句引起了问题,但我不确定是什么。
SELECT Nz(Count(tb1lPersonnel.Status),0 AS CountOfStatus, tbl1UTCAssignemnt.RequiredAFSC, tbl2AFSCRequirements.TotalRequired
FROM (tb1lPersonnel INNER JOIN tbl1UTCAssignemnt ON tb1lPersonnel.ID = tbl1UTCAssignemnt.PersonnelAssigned2) INNER JOIN tbl2AFSCRequirements ON (tbl1UTCAssignemnt.AssignedUTC = tbl2AFSCRequirements.UTC) AND (tbl1UTCAssignemnt.RequiredAFSC = tbl2AFSCRequirements.AFSC1)
WHERE (((tbl1UTCAssignemnt.AssignedUTC)=1) AND ((tbl1UTCAssignemnt.[Suite#])="001") AND ((tb1lPersonnel.Status)=6))
GROUP BY tbl2AFSCRequirements.TotalRequired, tbl1UTCAssignemnt.RequiredAFSC
ORDER BY tbl1UTCAssignemnt.RequiredAFSC;
结果看起来像这样
CountofStatus / RequiredAFSC / TotalRequired
2 / 1C171 / 2
2 / 1C852 / 2
1 / 1C872 / 1
我需要的是具有0 CountofStatus填充的requiredAFSC,如下所示
CountofStatus / RequiredAFSC / TotalRequired
2 / 1C171 / 2
0 / 1C832 / 1
2 / 1C852 / 2
1 / 1C872 / 1
非常感谢任何帮助。
答案 0 :(得分:0)
首先要做的事情。 Count
不会返回NULL
。如果计算了NULL字段,那些NULL字段将不会增加计数
如果计算一个满NULL的列,则Count将返回0.
其次,nz
评估Count
是否返回NULL
哪个不会发生,因此永远不会返回0.
假设您要计算CountofStatus
中有多少NULL字段,那么您是对的,问题出在where子句中。您的where子句永远不会返回包含NULL的CountofStatus
。请按以下步骤操作:
修改你的where子句以包含空值。
WHERE (((tbl1UTCAssignemnt.AssignedUTC)=1) AND ((tbl1UTCAssignemnt.[Suite#])="001") AND (((tb1lPersonnel.Status)=6) OR (IsNull(tb1lPersonnel.Status)=True))