SSRSには、複数選択であり、デフォルトのラベルが(None)でデフォルト値が0のレポートパラメーターがあります。
私のクエリでは、0またはその他の値を渡すことができるように設定したいと思います。ただし、0を渡した場合、データをフィルターで除外したくありません。
通常、whereステートメントに以下の句を追加しますが、これが複数の値で行われるかどうか、またはどのように行われるかはわかりません。
(@Parameter=0またはtable.column=@Parameter)
SSRSには、複数選択であり、デフォルトのラベルが(None)でデフォルト値が0のレポートパラメーターがあります。
私のクエリでは、0またはその他の値を渡すことができるように設定したいと思います。ただし、0を渡した場合、データをフィルターで除外したくありません。
通常、whereステートメントに以下の句を追加しますが、これが複数の値で行われるかどうか、またはどのように行われるかはわかりません。
(@Parameter=0またはtable.column=@Parameter)
私が質問を理解しているかどうかわからない、あなたは可能な値のリストまたは0を渡すつもりですよね?...
もしそうなら、おそらくあなたがしなければならない唯一の変更はあなたのパラメータを文字列(「0」または「1,2,3」)に設定し、このような条件を実行することです
(@Parameter = '0' OR table.column IN (@Parameter))
プロシージャを呼び出していますか、それともSSRSから直接クエリを実行していますか?
procを呼び出している場合は、procでフィルタリングを実行する必要があるかどうかを判断してみてください。
DECLARE @filter INT
SELECT @filter = LEN(@parameter)
-- or something similar to determine if there are any parameters
SELECT
-- everything you want
WHERE
@filter = 0 OR table.Column IN (@parameter)
ユーザーがパラメーターをクエリに入力するときに、パラメーターを正確に渡す必要はありません。
データセットには、次の2つのパラメータを設定できます
@Parameters
。@ApplyFilter
次に、データセットの[パラメーター]タブ(パラメーター名=パラメーター値):
@Parameters = @Parameters
@ApplyFilter = IIF(And(Parameters!Parameters.Value.Length = 1,Parameters!Parameters.Value(0)=0),"0","1")
最後に、SQLフィルターは次のようなものである必要があります。
WHERE
(@ApplyFilter = 1 AND tbl.column IN (@Parameters))
私がこのソリューションを好む理由は、クエリを読みやすくするためです。