Nz () не работает в MS Access - PullRequest
0 голосов
/ 11 июля 2011

У меня есть запрос кросс-таблицы, который считает Patient_ID в качестве значения.

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

Я также попытался:

Total = Nz(Count(Research.Patient_ID)

и ....

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

и т. Д.Nz () работает, только если хотя бы одно значение не равно нулю.Однако, если все они нулевые, вместо того, чтобы видеть все 0, я ничего не вижу.

Это проблематично, потому что я использую эти запросы как подзапросы.Основной запрос берет значения из этого (и других подобных) и складывает их вместе.К сожалению, если один из подзапросов является полностью нулевым, то сумма фактически становится нулевой, независимо от того, должно ли оно быть.

Например:

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 ]

2 голосов
/ 11 июля 2011

В этом запросе основной запрос производит сумму подсчетов, определенную в двух подзапросах. Это то, что вы ищете?

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 голосов
/ 11 июля 2011

nz(null, null)+0 всегда будет null, поскольку null + anything равно null.

Если nz() может вернуть null, просто примените другой nz() для обработки;

SELECT ... nz(nz([value1], [value2]), 0)
0 голосов
/ 11 июля 2011

Вы, вероятно, должны быть более сложными и опубликовать точную часть вашего основного запроса, где суммируются два числа.

Пока я могу только догадываться, что вам нужно добавить NZ() к основному выражению запроса, что-то вроде (используя ваш псевдокод)

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