MS ACCESS NZ功能不返回0(没有我以前发现的解决方案有效)

时间:2016-11-29 16:30:20

标签: ms-access count

从我在论坛中找到的内容来看,我的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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

首先要做的事情。 Count不会返回NULL。如果计算了NULL字段,那些NULL字段将不会增加计数 如果计算一个满NULL的列,则Count将返回0.

其次,nz评估Count是否返回NULL哪个不会发生,因此永远不会返回0.

假设您要计算CountofStatus中有多少NULL字段,那么您是对的,问题出在where子句中。您的where子句永远不会返回包含NULL的CountofStatus。请按以下步骤操作:

  1. 删除nz功能导致它没有帮助。
  2. 修改你的where子句以包含空值。

    WHERE (((tbl1UTCAssignemnt.AssignedUTC)=1) AND ((tbl1UTCAssignemnt.[Suite#])="001") AND (((tb1lPersonnel.Status)=6) OR (IsNull(tb1lPersonnel.Status)=True))