1

在 SSRS 中,我有一个多选报告参数,默认标签为(无),默认值为 0。

在我的查询中,我想对其进行设置,以便我可以传入 0 或其他一些值。但是,如果我传入 0,我不希望它过滤掉数据。

通常,您会将以下子句添加到您的 where 语句中,但我不确定是否或如何使用多个值完成此操作。

(@Parameter = 0 或 table.column = @Parameter)

4

3 回答 3

2

不知道我是否理解这个问题,您将传递一个可能值或 0 的列表,对吗?...

如果是这样,也许您要做的唯一更改是将参数设置为字符串('0' 或 '1,2,3')并执行这样的条件

(@Parameter = '0' OR table.column IN (@Parameter))
于 2012-08-16T21:46:46.973 回答
0

您是在调用过程还是从 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)
于 2012-08-16T21:43:19.647 回答
0

您不必完全按照用户将参数填写到查询中来传递参数。

在您的数据集上,您可以有 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))

我更喜欢这个解决方案的原因是因为你使查询更具可读性!

于 2012-08-17T14:03:06.937 回答