我正在将水晶报表转换为ssrs报表。该报告具有一个参数,并根据选择内容选择该列,然后对该列进行分组。
例如,如果用户选择“路线a”,则该表将显示一列,其中包含所有“路线a”和该列上的组。
如何在SSRS中实现这一目标?
我创建了一个参数,然后添加了一个表和一个计算字段。该表达式查找当前参数值,然后根据参数值从数据集中获取该列。但是,它花费的时间太长(超过2分钟。我认为这可能不是最有效的方法。在晶体中它要快得多。
我已经阅读了有关列过滤(隐藏/显示)的信息,但是我该为表选择哪个字段?该列必须是第一列。
答案 0 :(得分:1)
SSRS中的几乎所有内容都是一个表达式,包括SQL语句。假设您的SQL语句当前如下所示:
SELECT RouteA, ThisColumn, ThatColumn, OtherColumn
FROM MyTable
ORDER BY RouteA
设置您的参数以进行字段选择(我们将其称为RouteField
),将显示文本作为标签,并将要用于分组的字段名称作为值。像这样:
Label | Value
-------------+--------
Route A | RouteA
Route B | RouteB
Weird Route | RouteZ
现在,您可以使用参数通过使用字符串表达式构建SQL,将参数值中的字段名称直接插入SQL语句中。
="SELECT " & Parameters!RouteField.Value & " AS Route, ThisColumn, ThatColumn, OtherColumn "
&"FROM MyTable "
&"ORDER BY " & Parameters!RouteField.Value
无论选择什么字段,它将在SQL中别名为字段“ Route”,因此您可以在整个报表中一致地使用它。
请注意,您可能必须手动在数据集中设置字段名称。
还要确保文本之间具有适当的空格,以使SQL有效。