1
CASEステートメントを使用して2つの条件に基づいて式を実行したい場合の回避策またはソリューションを探しています。私は何をしようとしているかを説明するためにいくつか疑似コードを書いています。ケースステートメントの式 - 条件付きWHERE
WHERE (RN = 1)
AND
CASE
WHEN (@ApplicationName '' OR @ApplicationGroup '')
THEN
AND (
@AppFilterType = 'Groups' AND [GroupName].[Name] IN (SELECT StringValue FROM [StarTeam].[dbo].fn_CSVToTable(@ApplicationGroup))
OR
@AppFilterType = 'Apps' AND [AppName].[Name] IN (SELECT StringValue FROM [StarTeam].[dbo].fn_CSVToTable(@ApplicationName))
)
END
これはアイデアです、@ApplicationName
および/または@ApplicationGroup
が値を持っている場合にのみ条件を実行します。
私は、SQL Server上で2005
を実行すると、いくつかの方法で可能です。このT-SQLストアドプロシージャでこれを使用していますか?
ご協力いただきありがとうございます。
ああ、ケースステートメントはまったく必要ありません。私はそれを行ってみましょう。ありがとう! – Jared
申し訳ありませんが、私はこれをテストしました。エラーはありませんが、期待通りに動作しません。たぶん私は何かを見逃しています。私の両方のパラメタに値がない場合、私はブロックをまったく実行したくありません。だから、ブロックがまったくそこにないように振る舞います。今私がこれを実行すると、私のレコードセットから結果が戻ってこない。アイデアは私がすべてを取り戻すべきだということです。私がANDブロックをコメントアウトすると、すべてのレコードが返されます。私が正しいことをしていないかもしれないと思いますか? – Jared
上記のWHERE節を改訂してみてください。 – RedFilter