我在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
。
必须对报告中显示的行组数据实施此逻辑。
如果有人可以帮我解决这个问题,我将不胜感激。
谢谢。
答案 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。