在sql报告服务中使用多值参数时,使用数据集本身的过滤器实现列表过滤器更合适,数据区域控制还是更改驱动数据集的实际查询?
SSRS将支持任何情况,所以我要问,是否有一个理由超出为什么应该在一个层面上完成另一个层面呢?
对我来说修改查询本身并要求RDBMS处理过滤是最有效的,但是我可能遗漏了SSRS数据处理扩展如何处理这种情况的事情?
答案 0 :(得分:1)
你是对的。要做的就是将参数传递给数据库引擎。
Reporting Services只应用于呈现内容。传递回客户端Web浏览器所需的数据越少,报告呈现的速度就越快。
您可以找到关于使用多值参数的类似帖子的答案。
Passing multiple values for a single parameter in Reporting Services
希望这会有所帮助,但请随意提出任何进一步的问题。
干杯, 约翰
答案 1 :(得分:0)
使用表值UDF是一种很好的方法,但是仍然存在一个问题 - 如果在许多查询位置调用此函数,甚至在内部选择内部,则可能存在性能问题。您可以使用表变量(或临时表eather)来解决此问题:
DECLARE @Param (Value INT)
INSERT INTO @Param (Value)
SELECT Param FROM dbo.fn_MVParam(@sParameterString,',')
...
where someColumn IN(SELECT Value FROM @Param)
所以函数只会被调用一次。
其他的事情,如果你不使用存储过程,而是嵌入式SQL查询,你可以把MVP放入查询中: ... someColumn IN(@Param) ...
答案 2 :(得分:0)
使用RDBMS进行主过滤
SSRS为数据驱动显示和/或动态显示提供过滤。特别适用于子报告等