如何使用SSRS中的多值参数列表过滤列

时间:2015-04-22 23:55:05

标签: sql-server reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012

我是SSRS的新手。我认为应该很简单,花了我一天的时间,我无法解决它。我只需要以下

Select * from table1 where len(username) <= 6
Select * from table1 where len(username) >= 7

我想显示一个下拉菜单,其中包含两个选项Short Username和Long Username。 当用户名单击短用户名时,将显示第一个查询结果,当用户单击长用户名时,将显示第二个查询结果。

到目前为止,我添加了一个带有两个值的参数列表,即Short参数列表= 6和Long参数列表= 7.然后我添加了两个过滤器。在第一个表达式= len(NameColumn.value)operator =&lt; = value = @parameter。在第二个表达式= len(NameColumn.value)operator =&gt; = value = @parameter。你能取悦我能做些什么来实现它。

2 个答案:

答案 0 :(得分:2)

我认为在查询中进行过滤可能会更好,而不是使用SSRS过滤器。试试这个查询。

select * from table1 where (@Parameter = 0 and len(username) <= 6) or (@Parameter = 1 and len(username) >= 7)

您的参数可以像这样设置。

enter image description here

答案 1 :(得分:2)

您可以在@ energ1ser提到的数据集中执行类似的FILTER。

您将拥有一个参数,用户可以选择Long或Short。您可以使用不同的值。

对于表达式,您将使用:

=IIF( (Parameters!YourParameter.Value = "Short" and LEN(FIELDS!USERNAME.VALUE) <= 6) 
   OR (Parameters!YourParameter.Value = "Long"  and LEN(FIELDS!USERNAME.VALUE) >= 7), 1, 0)

对于类型,请使用整数,运算符 = 和值 1

此表达式将每行计算为 0 1 ,然后针对 1 对其进行过滤。

要显示所有记录,请在为参数选择全部时添加另一个 OR

=IIF( (Parameters!YourParameter.Value = "Short" and LEN(FIELDS!USERNAME.VALUE) <= 6) 
   OR (Parameters!YourParameter.Value = "Long"  and LEN(FIELDS!USERNAME.VALUE) >= 7) 
   OR (Parameters!YourParameter.Value = "All"), 1, 0)