SSRS 报告自定义排序顺序
SSRS Report Custom Sort Order
对于我在 SSRS table.
中的行组之一所需的自定义排序,我遇到了一些问题
自定义排序顺序的逻辑 -
如果行组值包含特定值,则它应始终显示在底部,所有其他值必须按升序显示。
例如-
假设从值列表 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
.
必须为报表中显示的行组数据实现此逻辑。
如果有人能帮我解决这个问题,我将不胜感激。
谢谢。
我使用 IIF(或多个 IIF)来进行这样的自定义排序。
对于您的情况:
A,E,G,D,C,and F, D should be always be displayed last and the other
elements are to be sorted in asc
我会先进行自定义排序:
=IIF(Fields!MyFIeld.Value = "D", 2, 1)
这将首先对 D 进行排序。
然后添加仅使用字段 (Myfield) 的第二个 Sort 以按字段对其余部分进行排序。
第二种情况:
if the list of elements is - P,J,M,N,D,C,K the required sort order is C,J,K,M,N,P and D
然后我将使用多个 IIFs:
进行单个自定义排序
=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)))))))
-
尝试在排序设置中使用以下表达式。
=IIF(
Fields!YourField.Value="D","ZZZZ" & Fields!YourField.Value,
Fields!YourField.Value
)
如果您没有首四个字母为 ZZZZ 的组,这将对您的组进行排序。
如果有帮助请告诉我。
我创建了一个包含总计的 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 作为默认值。
对于我在 SSRS table.
中的行组之一所需的自定义排序,我遇到了一些问题自定义排序顺序的逻辑 -
如果行组值包含特定值,则它应始终显示在底部,所有其他值必须按升序显示。
例如-
假设从值列表 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
.
必须为报表中显示的行组数据实现此逻辑。
如果有人能帮我解决这个问题,我将不胜感激。
谢谢。
我使用 IIF(或多个 IIF)来进行这样的自定义排序。
对于您的情况:
A,E,G,D,C,and F, D should be always be displayed last and the other elements are to be sorted in asc
我会先进行自定义排序:
=IIF(Fields!MyFIeld.Value = "D", 2, 1)
这将首先对 D 进行排序。
然后添加仅使用字段 (Myfield) 的第二个 Sort 以按字段对其余部分进行排序。
第二种情况:
if the list of elements is - P,J,M,N,D,C,K the required sort order is C,J,K,M,N,P and D
然后我将使用多个 IIFs:
进行单个自定义排序=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)))))))
-
-
尝试在排序设置中使用以下表达式。
=IIF(
Fields!YourField.Value="D","ZZZZ" & Fields!YourField.Value,
Fields!YourField.Value
)
如果您没有首四个字母为 ZZZZ 的组,这将对您的组进行排序。
如果有帮助请告诉我。
我创建了一个包含总计的 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 作为默认值。