2017-08-18 13 views
3

こんにちは私は、SQL Serverで1つのクエリでフィルタリングするつもりです。私は「=」近いこのSQL Serverを使用している場合のcase節の使用方法は?

不適切な構文のようなエラーにいくつかのものを取得しています。

私は1つのテーブルを持っています。このテーブルストア2の列1はsocialtypeであり、2はこのようなISFUserです。私はこの2つの列のいくつかをフィルタリングしたいと思います。フィルタパラメータはAll、Instagram、ISFUserです。だから私はすべてを選択する必要がありますすべてのデータにしたい。 Instagramを選択した後、InstagramUsersを取得します。このような。

ここは私の質問です。

declare @Filter nvarchar(max) = 'Instagram' 
select * from Users 
where IsDeleted = 0 and @Filter = 
case 
when @Filter = 'Instagram' then socialtype 
when @Filter = 'ISFUser' then (ISFUser = 1) 
ELSE @Filter = 'ALL' then (1 = 1) 
END 

これはフィルタを適用したいのですが、どのようにすればわかりませんか。私はエラーが発生しています。あなたがあなたの条件を広げることができ

答えて

3

declare @Filter nvarchar(max) = 'Instagram'; 

select * 
from Users 
where IsDeleted = 0 
    and (
     (@Filter = 'Instagram' and socialtype = 'Instagram') 
     OR 
     (@Filter = 'ISFUser' AND IFUser = 1) 
     OR 
     @Filter = 'ALL' 
    ); 
+1

私はこのようにしたいので、ありがとうございました。 – Edit

0

私はは、あなたが何をしようとしていることは、次のだと思う

select 
    * 
from 
    Users 
where 
    IsDeleted = 0 and (
     @Filter = 'ALL' or 
     @Filter = 'ISFUser' and ISFUser = 1 or 
     @Filter = 'Instagram' and socialtype = 'Instagram' 
    )