Report Builder 3.0如何筛选不同的列

时间:2016-06-13 18:56:37

标签: sql filter reportbuilder3.0

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

用于运行此报告的SQL将“1”添加到“主页组”的“Filter1”列,将“2”添加到“其他组”的“Filter1”列。

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

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

我想要做的是在报告中添加一个过滤器,以便用户只获取他们想要的记录。我正在努力的是,过滤器必须使用2列,我不知道该怎么做。

例如,如果用户选择Home Group(值= 1),则报告应仅返回Filter1列中具有1的记录

如果用户选择其他分支(值= 4),则报告应仅返回Filter2列中具有2的记录

此报告需要一段时间才能运行几分钟,所以(我认为)我更愿意在报表生成器而不是SQL中过滤结果。如果我能用SQL做到这一点,那是可以接受的。我试图编写SQL来做到这一点,但也没能成功。

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

1 个答案:

答案 0 :(得分:0)

在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中,只需使用

的过滤器表达式
(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。

enter image description here