Reporting services 如何根据参数选择列

Reporting services 如何根据参数选择列,reporting-services,Reporting Services,我正在将水晶报告转换为ssrs报告。报表有一个参数,它根据所选内容选择列,然后在该列上分组 e、 g如果用户选择路由a,则该表将显示一列,其中包含该列上的所有路由a和组 我如何在SSRS中实现这一点 我创建了一个参数,然后添加了一个表和一个计算字段。表达式查找当前参数值,然后根据参数值从数据集中获取列。然而,它花费的时间太长,超过了2分钟。我认为这可能不是最有效的方法。水晶的速度快得多 我读过关于列筛选隐藏/显示的内容,但是我应该为表选择哪个字段?列必须是第一列。SSRS中几乎所有内容都是表达式

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

e、 g如果用户选择路由a,则该表将显示一列,其中包含该列上的所有路由a和组

我如何在SSRS中实现这一点

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


我读过关于列筛选隐藏/显示的内容,但是我应该为表选择哪个字段?列必须是第一列。

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中的字段名路由,因此您可以在整个报告中一致地使用它

请注意,您可能需要在数据集中手动设置字段名


还要确保文本之间有适当的空格,以便SQL有效

你在用什么表达,在哪里?是在报表设计中还是在数据集中添加列?此外,请编辑您的问题以显示当前数据集结果的结构。就我个人而言,我会在数据库服务器上这样做,因此如果这是一个选项,请确保用正确的RDMS和版本标记问题。表达式正在创建计算字段。这是一个简单的switch语句,它获取参数的值,然后基于该值获取列。我需要分组,然后在分组中创建一个子行,因此我不确定如何使用sql进行分组,或者这是否可能。您没有回答我的任何问题。当你说计算字段是在数据集设计的报告中的文本框中吗?嘿,谢谢。我有这个想法,但我得到了不正确的语法错误。这是我的问题选择&Parameters!RouteField.Value&作为路由,column2&来自TABLEUpdate。我想出来了。谢谢,您必须确保事物之间有空格,以便SQL有效-在您的示例中,route、column2和FROM表之间没有空格,这将破坏SQL。很高兴你成功了!