我有一个SSRS报告,其中包含3个数据集,它们来自一个数据源。主数据集是一个存储过程,它基于由其他两个数据集提供支持的一组参数来聚合某些数据。
支持该报告的主要存储过程具有4个参数。一个是数据类型的ID,两个是开始日期和结束日期,第三个只是标记参数。flag参数是多值参数,我想在其中传递多个也是VARCHAR值的标志值。
在我的@Flag参数的存储过程中,我有一个共同点:
WHERE [Flag] IN (@Flag)
然后,当然,SSRS报表上的@Flag参数设置为允许“多个值”,这些值也从从维度表中提取那些@Flag值的查询中填充。
我的问题
在大多数情况下,处理INT值时,可以使用相同的技术。但是,当我处理字符值时,它会失败。如果我选择一个标志,该报告将产生神奇效果。如果选择多个标志,则似乎无法正确将标志传递给存储过程,并且不会返回任何结果。
在存储过程中直接测试多值标志时:
WHERE [Flag] IN ('A', 'B', 'C')
该存储的过程正常工作。因此,问题不在于存储过程,而是SSRS如何将多值传递给@Flag参数。
尝试过的解决方案
我尝试为此@Flag参数对SSRS数据集进行以下调整:
=join(Parameters!<your param name>.Value,",")
还有这个:
=SPLIT(JOIN(Parameters!<your param name>.Value,","),",")
这些都适用于单个值,但不适用于多个值。
我在这里想念什么?
=join(Parameters!<your param name>.Value,",")
)添加到读取参数的数据集中,在“参数”选项卡下:在“参数值”下拉菜单的右侧有一个用于添加表达式的“ fx”按钮-下。