2017-03-29 16 views
0

私はストアドプロシージャの入力変数に基づいて自分のSQLでwhere where条件を設定しようとしています。Dynamic Where句T-SQL可変演算子

Where RF.InternalCompany = @Company 
And RF.Installdate between @Datefrom and @DateTo 
AND CASE WHEN @ContractType = 'Single Asset Contract' THEN numA.NumOfAssets = 1 
    WHEN @ContractType = 'Multi-Asset Contract' THEN numA.NumOfAssets > 1 
    END 

どうすれば設定できますか?

+0

あなたはここで変数を_set_しようとしている、またはあなたが 'WHERE'句のロジックでその変数を_use_しようとしていますか? –

答えて

1
AND 
(
    (@ContractType = 'Single Asset Contract' AND numA.NumOfAssets = 1) 
    OR 
    (@ContractType = 'Multi-Asset Contract' AND numA.NumOfAssets > 1) 
) 
+0

ありがとう...私はそれが単純でなければならないことを知っていた...それは長い一日だった –

2

以下のように変更し、それを...

Where RF.InternalCompany = @Company 
And RF.Installdate between @Datefrom and @DateTo 
AND ((@ContractType = 'Single Asset Contract' AND  numA.NumOfAssets = 1) Or 
(@ContractType = 'Multi-Asset Contract' AND numA.NumOfAssets > 1)) 
+0

Perfect Thanks! –

関連する問題