【问题标题】:SSRS Multi value parameters - appropriate layer for implmentation of the filterSSRS 多值参数 - 实现过滤器的适当层
【发布时间】:2009-02-04 22:53:24
【问题描述】:
在 sql 报告服务中使用多值参数时,使用数据集本身的过滤器实现列表过滤器是否更合适,数据区域控制或更改驱动数据集的实际查询?
SSRS 将支持任何场景,所以我问,除了为什么应该在一个级别而不是另一个级别上完成这一显而易见的事情之外,还有其他原因吗?
对我来说,修改查询本身并要求 RDBMS 处理过滤将是最有效的,但对于 SSRS 数据处理扩展如何处理这种情况,我可能遗漏了一些东西?
【问题讨论】:
标签:
sql-server
sql-server-2008
reporting-services
ssrs-2008
【解决方案2】:
使用表值 UDF 是一种很好的方法,但仍然存在一个问题 - 如果在许多查询位置调用此函数,甚至在内部选择内部,可能会出现性能问题。您可以使用表变量(或临时表 ether)解决此问题:
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)
...
【解决方案3】:
使用 RDBMS 进行主过滤
SSRS 为数据驱动显示和/或动态显示提供过滤。特别适用于子报表等