CASE

2017-11-03 7 views
0

と私は、SQL Server 2016の句を使用していると私はこのようになりますテーブルを持っている:CASE

Create table testA 
(
    ID int not null, 
    OriginalValue int null 
) 

Insert into testA (ID, OriginalValue) 
values (1, 10), (2, 10), (3, 10), 
     (4, 10), (5, 10), (6, null), (7, null) 

私は私がすべて表示されますどのように

Declare @intExclude int = 1 

Select ID, 
     OriginalValue as OriginalValue 
From testA 
Where 
[email protected] = 1 
Where IsNull(OriginalValue,0) > 0 

[email protected] = 0 
where isnull(Originalvalue,0) = 0 or IsNull(originalvalue,0) > 0 

に基づいて値を表示する必要があるに値は除外が0で、除外が1のときは記録されません where句では大文字小文字を試しましたが、成功しませんでしたか?

おかげ オデッド・ドロール

答えて

0

はこれを試してみてくださいしてみてください?私ものIsNull(OriginalValue、0)!= ケース@intExclude = 1 次に(0を選択)エルス (1を選択)種皮 から をした

Where (@intExclude = 1 
    and IsNull(OriginalValue,0) > 0) OR (@intExclude = 0 
    and (isnull(Originalvalue,0) = 0 or IsNull(originalvalue,0) > 0)); 
0

はこれが何をしたいですか?

Where (@intExclude = 1 and coalesce(OriginalValue, 0) > 0)) or 
     (@intExclude = 0 and coalesce(Originalvalue, 0) >= 0) 
+0

それは作品のおかげで、 を、終了 –

+0

@OdedDror。 。 。あなたは実際これに対するPankajの答えが好きですか?私ものIsNull(OriginalValue、0)!= ケース@intExclude = 1 次に(0を選択)エルス (1を選択) エンド –

0

私はあなたがこれを必要とする推測:

Declare @intExclude int = 1 

Select ID, OriginalValue 
From testA 
Where (@intExclude = 1 and OriginalValue is not null) 
    or (@intExclude = 0) 
+0

おかげで、 それは動作しますが、 OriginalValueがゼロの場合、IsNull(OriginalValue、0)を使用したクエリは失敗します。 IsNullを使用するとnullsが0に変換されるため、 "is not null"を使用して比較する必要があります –

+0

は私が推測するテスタ から をした –

+0

正しいですが、私のケース0も元の値を考慮していません。 ケース文に0を追加します ありがとう Oded Dror –

0

それはあなたのために働く場合は、この

Where 
(@intExclude = 1 
and IsNull(OriginalValue,0) > 0) or 

(@intExclude = 0 
and isnull(Originalvalue,0) >= 0)