将默认值传递给SSRS查询

时间:2012-08-16 21:37:00

标签: sql-server sql-server-2008 tsql ssrs-2008 reporting-services

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

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

通常你会在where语句中添加以下子句,但我不确定是否或如何使用多个值。

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

3 个答案:

答案 0 :(得分:2)

不知道我是否理解了这个问题,你将通过一个可能的值列表或0,对吗?...

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

(@Parameter = '0' OR table.column IN (@Parameter))

答案 1 :(得分: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)

答案 2 :(得分: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))

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