2016-08-24 4 views
0

パラメータ値がfalseの場合、クエリに列を追加する必要がある動的クエリで作業しています。パラメータ値に基づいて条件に列を追加するSQL

// SQL:上記のクエリで

SET @FilterExp = 'SELECT * from tblName where ptblnFlag = '+Convert(varchar(2),@blnFlag)+') as tbl where 1=1'+ COALESCE(NULLIF(CONVERT(varchar(8000), @FilterExp),''), '') 

私は@blnFlag列がどこ条件に追加することができ、その後偽であるかどうかを確認する必要があります。本当なら、そこにいる必要はありません。

条件がfalseの場合と同様に、すべての値が返されます。真の場合、結果セットは条件に基づいています。

答えて

1
あなたはちょうどここ Dynamic queryAND/ORオペレータの必要性を全く必要としない

SELECT * 
FROM tblName 
WHERE (ptblnFlag = @blnFlag 
     AND @blnFlag = 0) 
     OR @blnFlag = 1 

変数名と間違っているかもしれないが、ロジックが、私はより良い理解を得るために最小化してきたいくつかの大きなクエリ

+0

その同じになります。 – iamCR

+0

@SanthoshKumar Ok、私の答えが有用かどうか。いいえの場合は、このように質問を変更します。動的SQLを使用しないでください。 '@blnFlag = 0'の場合は' select * from ... 'のようにする必要があります。 '@blnFlag <> 0'の場合は' select * from ...'のようになります。 –

+0

ロジックが機能しました。サブクエリとより複雑な条件がほとんどないため、私は '動的クエリ 'を挙げました。御時間ありがとうございます。 – iamCR

関連する問題