很抱歉成为菜鸟,但是我相信这是我需要帮助的正确地方。

我刚刚开始处理SSRS报告(2005年),我想了解如何添加具有执行排序功能的多个选项的过滤器下拉列表。我已将一个列表导入到我的表中,并具有此类所需的适当字段。

IE浏览器我想要一个名为“排序依据”的下拉框,其中包含可用的选择:

顾客姓名

邮编,SIC

SIC,城市

其中的每一个都按查看报告时选择的功能执行特定的顺序。

我玩过游戏并且能够设置数据集和添加过滤器,但这并不是最佳选择,因为(例如)您必须知道确切的ZipCode和SIC匹配才能返回任何结果。

必须有一种简单的方法,可以根据下拉列表的选择按标准返回具有多个顺序的select语句,但是如果存在,我找不到它。

任何帮助将不胜感激!

最佳答案

我可以想到几个选择。在这两种情况下,我都假定参数SortOrder包含以下值:

  • 客户名称
  • 邮政编码,SIC
  • SIC,城市

  • 根据参数将排序表达式应用于表

    我已将表中的表达式排序:

    第一类:
    =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
    

    在这两种情况下,您都会获得基于参数的排序:

    10-02 02:32