2011-07-11 14 views
0

私は値としてPatient_IDを数えているクロスタブクエリを持っています。Nz()はMS Accessで動作しません

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

私も試みた:

Total = Nz(Count(Research.Patient_ID) 

と....

​​

を等nzは()少なくとも1つの値がnullでない場合にのみ機能します。ただし、すべてが0の場合は表示されず、nullの場合は何も表示されません。

サブクエリとしてこれらのクエリを使用しているため、これは問題です。メインクエリは、この値(およびそのような値)から値を取り出し、それらを一緒に加算します。残念ながら、サブクエリのいずれかが完全にnullの場合、その合計は実際にはどうかにかかわらずnullになります。例えば

:本当に...

mainquery = 4 

助けてください

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 

+0

少なくとも完全なクエリとサンプルデータを投稿できますか? – Jacob

+3

あなたのNzの例のどれも正しく見えません - 彼らはタイプミスですか? Nz(Count(Research.Patient_ID)、0) - 2つの例は不均衡な括弧を持ち、最初のものは実際の値がありません。 –

答えて

2

(あなたの擬似コードを使用して)のようなものは、メイン・クエリはカウントの合計を生成します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

nz(null, null)+0は、常にnullとなり、null + anythingは、nullとなります。

nz()nullを返すことができる場合は、別のnz()を適用して処理してください。

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

null +何かがUNKNOWN(データ値ではなく論理値)です...これはヌルがSQLのヌルと同じではない「ms-access」です) – onedaywhen

+1

それはどうですか?つまり、「アクセス」のNullはSQLと同じではありません(AccessにはNullはありませんが、Jet/ACE SQLとVBAはありません)。 –

0

2つのカウントが加算されているメインクエリの正確な部分を投稿してください。

は、これまでのところ私はあなたがメインのクエリ式にNZ()を追加する必要があることを推測することができ、このクエリでは

mainquery = NZ(subquery1, 0) + NZ(subquery2, 0) 
関連する問題