很抱歉成为菜鸟,但是我相信这是我需要帮助的正确地方。
我刚刚开始处理SSRS报告(2005年),我想了解如何添加具有执行排序功能的多个选项的过滤器下拉列表。我已将一个列表导入到我的表中,并具有此类所需的适当字段。
IE浏览器我想要一个名为“排序依据”的下拉框,其中包含可用的选择:
顾客姓名
邮编,SIC
SIC,城市
其中的每一个都按查看报告时选择的功能执行特定的顺序。
我玩过游戏并且能够设置数据集和添加过滤器,但这并不是最佳选择,因为(例如)您必须知道确切的ZipCode和SIC匹配才能返回任何结果。
必须有一种简单的方法,可以根据下拉列表的选择按标准返回具有多个顺序的select语句,但是如果存在,我找不到它。
任何帮助将不胜感激!
最佳答案
我可以想到几个选择。在这两种情况下,我都假定参数SortOrder包含以下值:
根据参数将排序表达式应用于表
我已将表中的表达式排序:
第一类:
=Switch(Parameters!SortOrder.Value = "CustomerName", Fields!CustomerName.Value
, Parameters!SortOrder.Value = "ZipCode, SIC", Fields!ZIP.Value
, Parameters!SortOrder.Value = "SIC, City", Fields!SIC.Value)
第二类:
=Switch(Parameters!SortOrder.Value = "CustomerName", Fields!CustomerName.Value
, Parameters!SortOrder.Value = "ZipCode, SIC", Fields!SIC.Value
, Parameters!SortOrder.Value = "SIC, City", Fields!City.Value)
应用查询中的排序
您可以根据参数向数据集查询添加
order by
,以执行相同的操作:...
order by case @SortOrder when 'CustomerName' then CustomerName
when 'ZipCode, SIC' then ZIP
when 'SIC, City' then SIC
end
, case @SortOrder when 'CustomerName' then CustomerName
when 'ZipCode, SIC' then SIC
when 'SIC, City' then City
end
在这两种情况下,您都会获得基于参数的排序: