SSRS报告自定义排序顺序

时间:2016-08-26 16:33:53

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

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

自定义排序顺序的逻辑 -

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

例如 -

假设从值列表A,E,G,D,C,and F," D"应始终显示最后一个,其他元素按asc顺序排序。

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

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

必须对报告中显示的行组数据实施此逻辑。

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

谢谢。

3 个答案:

答案 0 :(得分:4)

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

根据您的情况:

  

A,E,G,D,C和F, D 应始终显示在最后一个,另一个   元素将在asc

中排序

我会首先进行自定义排序:

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

这将首先对 D 进行排序。

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

对于第二种情况:

  

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

然后我会使用多个 IIF s进行一次自定义排序:

=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)))))))
      -

答案 1 :(得分:4)

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

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

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

如果有帮助,请告诉我。

答案 2 :(得分:1)

我创建了一个带有总计的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。