2016-10-13 25 views
0

現在、多くの条件を持つ多数の列を持つテーブルを作成するストアドプロシージャを作成しています。このプロシージャの要件の1つは、列Aの値がYESの場合、列Bには値が必要です。私はこれをコーディングするが、私はSQL Server:特定の条件でストアドプロシージャの結果のみを表示します。

CASE WHEN Table.A = 'YES' then Table.B is not NULL end 
+0

これらの条件の結果のみを表示するのではなく、私はまだ列Aが 'はい'以外の値を持つ場合には結果を含めることにします。結果が表示されないようにする唯一の方法は、両方の列が特定の条件に該当する場合です。 –

答えて

0

は、あなたが完全なクエリを追加する必要かもしれませ

Where (Table.A = 'YES' and Table.B is not NULL) 
    OR Table.A <> 'YES' 

にそれを変換することができ、これらの線に沿って、where句でcase文に傾いたか見当がつかないクエリに正しく追加されるようにするには

+0

これをwhere句に含めると、A = 'YES'、BがNULLでない場合、またはA = 'YES'の場合にのみ適用されます。 –

+0

@GabriellCarterこれは、条件を満たす(すなわち)「A」が「YES」で、「B」が「NOT NULL」であることを確認します –

+0

これを追加すると、両方の条件が適用されないすべての結果が除外されます正しい?私はまだ列AがA以外の値を持つ場合に結果を含めることができます。私が結果を表示したくない唯一の時間は、それらの特定の条件の下にあります。 –

0

私はあなたのプロセスに他のロジックを含める必要があると仮定しています。これは、caseステートメントを以下のようにネストすることで実現できます。もしそうでなければ、Prdpの答えはあなたの必要性に十分であろう。

where case when Table.A = 'YES' 
     then case when Table.B is not null 
       then 1 
       else 0 
       end 
     else 0 
     end = 1 
関連する問題