带有CASE语句的Report Builder 3.0 WHERE子句

时间:2014-10-21 18:40:48

标签: sql reporting-services ssrs-2008-r2

我的钻取报告与主报告一致。我想修改钻取报告,但是遇到了WHERE子句的问题。主要报告是一个包含不同老化桶的摘要,如下所示:

Team         Total       30         60        90        120

 A            xxxx      xxxx      xxxxx      xxxxx      xxxxx
 B            xxxx      xxxx       xxxx      xxxxx      xxxxx
 C            xxxx      xxxx       xxxx      xxxxx      xxxxx  

当前报告仅包含有关团队值的超链接。当用户单击其中一个团队时,钻取报告将显示构成总金额的记录的详细信息。效果很好。

我想要做的是修改钻取报告,以便用户可以为特定团队选择一个金额字段(30/60/90/120)。

钻取报告中的当前WHERE子句如下所示:" WHERE a.lgp = Parm1"。 Parm1是用户选择的团队的字段值。

我想修改WHERE子句,以便在用户选择团队或1个金额字段时它可以工作。我可以在WHERE子句中为此使用CASE语句吗?

如果用户选择了一个金额字段,WHERE子句对于30/60/90看起来像这样: WHERE.lgp = Parm1和ar.aging_bucket = Parm2。

Parm2将是1,2,3。但是,如果他们选择120,那么WHERE子句将是这样的:

a.lgp = Parm1和ar.aging_bucket => 4.

我可以通过报告创建3份钻取副本(1)Total,(2)30/60/90和(3)120但是我必须保留3份报告。我宁愿修改WHERE子句来处理所有这三种情况。

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

1 个答案:

答案 0 :(得分:0)

我认为你不能做到这一点,否则有人可能会在现在说明并告诉我们如何做。另外我过去曾尝试过类似的东西......但是......

以下显示表格中的所有信息。

declare @foo int = 1
select * from MySuperCoolTable
where @foo = 1

所以你可能会这样做:

select column1, column2 from TheNameOfTheTable
where
(((@param1 = 30) or (@param1 = 60) or (param1 = 90)) and ar.aging_bucket =>4 and whatever else here)
or
(@param1 = 120 and whatever else here)

显然,这只是被抛在了一起,但希望这能让你走上正确的道路,找到有用的东西。