1

我有三个参数(@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)

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

例如:数据集创建以下结果。

11, abc, 约翰, 12, 3
22, def, 约翰, 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, 约翰, 12, 3
22, def, 约翰, 345, 9
55, mno, 布莱恩, 60, 7

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

11, abc, 约翰, 12, 3
22, def, 约翰, 345, 9
44, jkl, 布莱恩, 45, 6

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

任何帮助表示赞赏。

4

1 回答 1

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 = '')

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

于 2012-06-15T15:36:09.000 回答