SSRS自定义排序顺序

时间:2018-02-12 19:45:39

标签: sql-server reporting-services ssrs-2012

我有一个简单的问题。在SSRS中,我有一个存储过程为我的产品类提供总单位。我收到了一个有趣的新排序请求。请求是按顺序排序单元格,然后强制特定的产品类始终显示在底部,而不管它们在desc单元聚合中的排名。我可以轻松编写一个表达式,使该类出现在最后,只要我只对产品类名称进行排序。 SSRS是否允许此选项?在下面的示例中,如果我仅将类用作排序字段,那么 Other 类实际上将是列出的第二个类。但是请求是总是将它放在底部。有什么想法吗?

Sort Example

提前谢谢大家!

1 个答案:

答案 0 :(得分:1)

我要做的是使用表达式对Tablix(或组,如果这些是行组)进行排序,将Total Units的{​​{1}}设置为Other目的的那种。如果正常类别的值可以低于0,则将其设置为某个较大的负数,如果可能的话,任何类别都不能低于此类。这不会更改-1列中Other旁边显示的内容,但会更改排序,以便Total Units始终位于底部。< / p>

如果您在Tablix,行组或图表中显示它,则无关紧要。无论您在何处设置Other列,而不是使用列,请使用如下表达式:

Sort by

并对其进行排序=IIf(Fields!ProductClass.Value = "Other", -1, Fields!TotalUnits.Value) 。如果这将进入Tablix或具有任何类型分组的图表,但您可能需要稍微修改以考虑汇总。

另一种选择可能是排序有2个图层:第一个图层是Z to A=IIf(Fields!ProductClass.Value = "Other", 0, 1)等表达式,然后第二个图层只是在Z to A上排序,{ {1}}。这首先要确保TotalUnits位于底部,而其他类别位于其上方,然后它会对其余类别进行排序。我不确定这两种方法之间是否会有明显的性能差异,但可能有一种方法比另一种更有意义,或者无论出于何种原因都更容易实现。