繁体   English   中英

Report Builder 3.0如何在不同的列上进行过滤

[英]Report Builder 3.0 How to filter on different columns

我的报表(Report Builder 3.0)中有一个名为REPORT_FILTER的参数。 此参数有4个可用值。 标签为(1)家庭组,(2)家庭分支,(3)其他组和(4)其他分支。 相应的值为1、2、3和4。

用于运行此报告的SQL在本地组的“ Filter1”列中添加“ 1”,在其他组的“ Filter1”列中添加“ 2”。

用于运行此报告的SQL将“ 1”添加到Home分支的“ Filter2”列中,将“ 2”添加到其他分支的“ Filter2”列中。

运行SQL时,在“过滤器1”和“过滤器2”列中得到1或2。 这些数据正是我所期望的。

我想做的是在报表中添加一个过滤器,以便用户仅获得他们想要的记录。 我正在努力的是,过滤器将必须使用2列,但我不确定该怎么做。

例如,如果用户选择家庭组(值= 1),则报告应仅返回在Filter1列中具有1的那些记录。

如果用户选择“其他分支”(值= 4),则报表应仅返回在Filter2列中具有2的那些记录。

该报告已经需要一段时间才能运行几分钟,所以(我认为)我希望在Report Builder中而不是在SQL中过滤结果。 如果我可以使用SQL做到这一点,那将是可以接受的。 我尝试编写SQL来做到这一点,但还没有成功。

任何建议,将不胜感激。 谢谢您的帮助。

在SQL中非常容易做到,只需添加以下WHERE条件:

WHERE 
CASE 
WHEN
   @REPORT_FILTER = 4 and Filter2 = 2 then 1
WHEN
   @REPORT_FILTER = 3 and Filter2 = 1 then 1
WHEN
   @REPORT_FILTER = 2 and Filter1 = 2 then 1
WHEN
   @REPORT_FILTER = 1 and Filter1 = 1 then 1
ELSE 0
END = 1

同样在SSRS中,只需使用Filters表达式

(Parameters!REPORT_FILTER.Value = 4 And Fields!Filter2.Value = 2)
OR
(Parameters!REPORT_FILTER.Value = 3 And Fields!Filter2.Value = 1)
OR
(Parameters!REPORT_FILTER.Value = 2 And Fields!Filter1.Value = 2)
OR
(Parameters!REPORT_FILTER.Value = 1 And Fields!Filter1.Value = 1)

将表达式类型设置为布尔值,并将比较值设置为True。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM