带有多值参数的空参数不返回任何内容

时间:2012-06-13 16:24:43

标签: reporting-services

我有三个参数(@person_id,@ Person_name,@ Supervisor_name),所有参数都有允许多个值允许空白值属性。

报告的列是使用具有相同列的数据集表创建的Person_id,Person_name,Supervisor_name,Claims_done,average_claims_perday。

返回数据的数据集在查询中包含过滤器:

where @person_id in (@person_id) 
or [PersonName] in (@Person_name)
or Supervisor_name in (@supervisor_name)

要求超出三个参数,如果任何参数为空,则查询应根据多值选择的参数给出结果。

例如:dataset创建以下结果。

11,abc,john,12,3 22,def,john,345,9 33,ghi,bryan,89,7 44,jkl,bryan,45,6 55,mno,bryan,60,7

如果我选择参数@Person_name ='mno'和@Supervisor_name ='John'并保持@person_id为空,那么它应该给出结果:

11,abc,john,12,3 22,def,john,345,9 55,mno,bryan,60,7

如果我选择@person_id = 11,44和@Supervisorname ='John',并将@Person_name留空,那么它应该给出结果:

11,abc,john,12,3 22,def,john,345,9 44,jkl,bryan,45,6

当我将任何参数留空时,报告不显示任何内容,如果我为所有参数选择至少一个值,则会给出完美的结果。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您对处理参数的要求可以改为:如果设置了参数,则对其进行过滤;否则不要过滤它。

如果这是正确的,请将where子句更改为以下内容:

WHERE (Person_id in (@person_id) OR @person_id = '')
AND (PersonName in (@Person_name) OR @Person_name = '')
AND (Supervisor_name in (@supervisor_name) OR @supervisor_name = '')

这意味着每个参数必须 满足,必须为空。