如何根据参数选择列

时间:2019-04-02 16:56:44

标签: reporting-services

我正在将水晶报表转换为ssrs报表。该报告具有一个参数,并根据选择内容选择该列,然后对该列进行分组。

例如,如果用户选择“路线a”,则该表将显示一列,其中包含所有“路线a”和该列上的组。

如何在SSRS中实现这一目标?

我创建了一个参数,然后添加了一个表和一个计算字段。该表达式查找当前参数值,然后根据参数值从数据集中获取该列。但是,它花费的时间太长(超过2分钟。我认为这可能不是最有效的方法。在晶体中它要快得多。

我已经阅读了有关列过滤(隐藏/显示)的信息,但是我该为表选择哪个字段?该列必须是第一列。

1 个答案:

答案 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有效。