Nz()无法在MS Access中工作

时间:2011-07-11 12:26:10

标签: sql ms-access ms-access-2007

我有一个交叉表查询,将Patient_ID计为值。

Total = Nz(Count(Research.Patient_ID))+0

我也尝试过:

Total = Nz(Count(Research.Patient_ID)

和....

Total = Nz(Count(Research.Patient_ID, 0)

等。 Nz()仅在至少一个值不为空时才有效。但是,如果所有这些都是null,而不是看到全0,我什么也看不见。

这是有问题的,因为我将这些查询用作子查询。主查询从这一个(和其他类似的)中获取值并将它们加在一起。不幸的是,如果其中一个子查询完全为null,那么总和实际上会变为null,无论是否应该这样。

例如:

subquery1: Nz(Count(Research.Patient_ID))+0

subquery2: Nz(Count(Research.All_ID))+0

mainquery: subquery1 + subquery2


if subquery1 = 4, and subquery2 = Null...

mainquery = subquery1 + subquery2
mainquery = Null

真的......

mainquery = 4

请帮忙。

3 个答案:

答案 0 :(得分:2)

nz(null, null)+0始终为nullnull + anythingnull

如果nz()可以返回null,只需应用其他nz()来处理它;

SELECT ... nz(nz([value1], [value2]), 0)

答案 1 :(得分:2)

在此查询中,主查询生成在两个子查询中确定的计数总和。这就是你要追求的吗?

SELECT
    Nz(s1.CountOfPatient_ID,0) + Nz(s2.CountOfAll_ID,0)
FROM
    [SELECT Count(Patient_ID) AS CountOfPatient_ID FROM Research]. AS s1,
    [SELECT Count(All_ID) AS CountOfAll_ID FROM Research]. AS s2

答案 2 :(得分:0)

你可能应该更精细,并发布主要查询的确切部分,其中两个计数被加起来。

到目前为止,我只能猜测您需要将NZ()添加到主查询表达式,例如(使用您的伪代码)

mainquery = NZ(subquery1, 0) + NZ(subquery2, 0)