我有三个参数(@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当我将任何参数留空时,报告不显示任何内容,如果我为所有参数选择至少一个值,则会给出完美的结果。
感谢任何帮助。
答案 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 = '')
这意味着每个参数必须 满足,或必须为空。