2012-04-16 11 views
4

この状況で値を返すためのすべての公式を試しましたが、引き数が間違っているというエラーが表示され続けます。ここに私のクエリは次のとおりです。Accessクエリの左外部ジョインでnullレコードの値を返す

SELECT [ER Root].[Network Indicator], 
[ER Root].[Prov Indicator], 
[ER Root].[Pos Indicator], 
[ER].[ER Visit] 
FROM [ER Root] LEFT JOIN ER ON ([ER Root].[Network Indicator] = ER.[Network Flag]) AND ([ER Root].[Pos Indicator] = ER.[POS Indicator]) AND ([ER Root].[Prov Indicator] = ER.[Category Indicator]); 

私が試してみました:

SELECT [ER Root].[Network Indicator], 
[ER Root].[Prov Indicator], 
[ER Root].[Pos Indicator], 
ISNULL([ER].[ER Visit],0) AS "ER Visit" 
FROM [ER Root] LEFT JOIN ER ON ([ER Root].[Network Indicator] = ER.[Network Flag]) AND ([ER Root].[Pos Indicator] = ER.[POS Indicator]) AND ([ER Root].[Prov Indicator] = ER.[Category Indicator 

は私が間違って何をしているのですか?

答えて

3

アクセス 'ISNULL関数は1つの引数のみを受け入れ、ブール値を返します。

を返す場合は、[ER Visit]がNullの場合、Accessセッション内で実行されるクエリでNzを使用できます。

SELECT Nz([ER Visit], 0) AS ER_Visit 

注エイリアスとしてフィールド名を再利用しようとすると、DBエンジンが「円形」参照文句を言うことがあるので、私は別名としてER_Visitを使用。

従来のASPや.NetなどのAccessセッションの外部からクエリを実行している場合は、Nz関数を使用できません。あなたは...

SELECT IIf([ER Visit] Is Null, 0, [ER Visit]) AS ER_Visit 
+0

ここではドローイングをすばやくする必要があります。 :-)私はあなたに徹底的に+1を与えました。彼女は質問を投稿した日以来、OPは戻っていないので、どちらの回答も受け入れられないと思う。 – HansUp

3

あなたはあなたのSQLコード内のいくつかのエラーを持っている代わりにこれを行うことができます:

  • ISNULLは(バリアント)の値である場合、それは単に評価し、2つの引数の関数ではありませんNULLを返し、Booleanの値(TrueまたはFalse)を返します。あなたが探している機能はNZです:

あなたはゼロ、長さゼロの文字列(「 」)、またはバリアントがNull別の指定された値を返すようにNzの機能を使用することができます。たとえば、 この関数を使用してNull値を別の値に変換し、 が式に伝播しないようにすることができます。

クエリにおける第二の問題は、次のとおりです。

  • あなたは二重引用符"に人間が読める提出名を囲みます。これは許可されていないので、角括弧[]で囲む必要があります。

あなたのクエリは、このように次のようになります。あなたはAccessアプリケーション自体の中ではなく、ADOを通じてAccessデータベースを使用して、いくつかの外部アプリケーションに直接このクエリを実行していない場合は

SELECT [ER Root].[Network Indicator], 
[ER Root].[Prov Indicator], 
[ER Root].[Pos Indicator], 
Nz([ER].[ER Visit],0) AS [ER Visit] 
FROM [ER Root] 
LEFT JOIN ER ON ([ER Root].[Network Indicator] = ER.[Network Flag]) AND 
([ER Root].[Pos Indicator] = ER.[POS Indicator]) AND 
([ER Root].[Prov Indicator] = ER.[Category Indicator]); 

を、 JETDAOODBC、またはその他の外部アクセスドライバの場合は、これらのドライバではNZがサポートされていないことにも注意してください。IIFは、しかしであり、あなたはあなたのようER Visitを選択することができます:あなたはAccessで直接しようとしているしかし、あなたはNZ機能を使用して問題を持っていなければならない場合

IIF([ER].[ER Visit] Is Null, 0, [ER].[ER Visit]) AS [ER Visit] 

乾杯!

関連する問題