【问题标题】:SSRS Report Custom Sort OrderSSRS 报告自定义排序顺序
【发布时间】:2016-08-26 16:33:53
【问题描述】:

对于我在 SSRS 表中的一个行组所需的自定义排序,我遇到了一些问题。

自定义排序顺序的逻辑 -

如果行组值包含特定值,则它应始终显示在底部,所有其他值必须按升序显示。

例如-

假设从值列表A,E,G,D,C,and F 中,“D”应始终显示在最后,其他元素按升序排序。

因此,上述列表应按以下顺序排序 - A,B,C,E,F,G,D

或者如果元素列表是 - P,J,M,N,D,C,K 所需的排序顺序是 - C,J,K,M,N,P and D.

必须为报表中显示的行组数据实现此逻辑。

如果有人能帮助我解决这个问题,我将不胜感激。

谢谢。

【问题讨论】:

    标签: sorting reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012


    【解决方案1】:

    尝试在排序设置中使用以下表达式。

    =IIF(
    Fields!YourField.Value="D","ZZZZ" & Fields!YourField.Value,
    Fields!YourField.Value
    )
    

    如果您没有四个首字母为 ZZZZ 的组,这将对您的组进行排序。

    如果这有帮助,请告诉我。

    【讨论】:

    • 嗨,亚历杭德罗,它奏效了。实际上,我已经用其他内容重命名了该字段,并正在使用其他字段进行排序。谢谢。
    【解决方案2】:

    我使用 IIF(或多个 IIF)来进行这样的自定义排序。

    根据你的情况:

    A、E、G、D、C 和 F,D 应始终显示在最后,其他 元素按 asc 排序

    我会先做一个自定义排序:

    =IIF(Fields!MyFIeld.Value = "D", 2, 1)
    

    这将首先对 D 进行排序。

    然后添加第二个 Sort,它只使用字段 (Myfield) 来按字段对其余部分进行排序。

    对于第二种情况:

    如果元素列表是 - P,J,M,N,D,C,K 所需的排序顺序是 C,J,K,M,N,P 和 D

    然后我将使用多个 IIF 进行单个自定义排序:

    =IIF(Fields!MyFIeld.Value = "C", 1, 
     IIF(Fields!MyFIeld.Value = "J", 2, 
     IIF(Fields!MyFIeld.Value = "K", 3, 
     IIF(Fields!MyFIeld.Value = "M", 4, 
     IIF(Fields!MyFIeld.Value = "N", 5, 
     IIF(Fields!MyFIeld.Value = "P", 6, 
     IIF(Fields!MyFIeld.Value = "D", 7, 8)))))))
    
      -

    【讨论】:

    • 我修正了我的第一个表达式,我错过了 D 的最后一个位置,而不是第一个。
    • 嗨,问题是 MyField 值是动态填充的。为了解释这个场景,我使用了硬编码值。
    • 使用=IIF(Fields!MyFIeld.Value = "D", 2, 1) 排序后,您能否解释一下您的第二个排序逻辑是什么?
    • @AritraB - 对于第二部分“其他元素将按 asc 排序”,我将按 ASC 顺序按字段 (Fields!MyFIeld.Value) 进行第二次排序。
    • 感谢您抽出宝贵时间对此进行调查。感谢你的帮助。我已经解决了这个问题,也试试你的解决方案!
    【解决方案3】:

    我创建了一个包含总计的 tablix,并且能够按字母顺序、总计(升序)、总计(降序)进行排序。首先我创建一个这样的数据集:

    Select 'Name' as Order_Col, 1 as Order_Num
    union 
    Select 'Ascending' as Order_Col, 2 as Order_Num
    union 
    Select 'Descending' as Order_Col, 3 as Order_Num
    order by 2
    

    然后在列分组部分,分组属性我在排序选项中插入以下表达式:

       =Switch(Parameters!SortOrder.Value = 1,Fields!Name.Value
        ,Parameters!SortOrder.Value = 3,(Fields!TtlRef.Value)*-1
        ,Parameters!SortOrder.Value = 2,Fields!TtlRef.Value)
    

    创建一个名为 SortOrder 的参数,其中值是 Order_Num,标签是 Order_Col。 您可以使用值 1 设置默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      相关资源
      最近更新 更多