为什么我的矩阵行组排序在SSRS中不起作用

时间:2014-10-17 15:44:45

标签: sorting matrix reporting-services

我有一个矩阵,从DB中提取行,它们显示如下:

Critical
High
Informational
Low
Medium

我需要他们这样展示:

Critical
High
Medium
Low
Informational

目前,我将转到行组属性,我选择排序,并输入以下表达式。

=IIF(Fields!Risk.Value = "Critical", 1, IIF(Fields!Risk.Value = "High", 2, IIF(Fields!Risk.Value = "Medium", 3, IIF(Fields!Risk.Value = "Low", 4, 5))))

当我生成报告时,它现在只有1行。只是"批判"行。缺少所有其他行。

有谁知道我做错了什么?

当我使用它时:

= iif(Fields!Risk.Value =" Critical"," 1",iif(Fields!Risk.Value =" High"," ; 2",iif(Fields!Risk.Value =" Medium"," 3",iif(Fields!Risk.Value =" Low",& #34; 4",iif(Fields!Risk.Value =" Informational"," 5","")))))

所有行再次显示,但顺序不正确,好像根本没有进行任何排序。

2 个答案:

答案 0 :(得分:1)

通过实际数据集而不是在报告的运行时提供风险标识符可能更清晰,更精确。在原始数据集中,您可以在select sql语句中包含case语句:

案例[风险]   当'严重'那么'1'   当'高'然后'2'   当'中''那么'3'   当'低'然后'4'   ELSE'5' END作为risk_identifier

然后,您可以在Tablix /矩阵中包含“risk_identifier”,并可以按分组或排序。

答案 1 :(得分:0)

您有以下选择:

尝试使用数据库中的Row_Number()函数为此数据生成标识符。然后,您可以将其指定为行组。 尝试使用switch ssrs表达式而不是嵌套的iif,如下所示:

=SWITCH(Fields!CurrentRiskLevel.Value = "Low", "Green",
Fields!CurrentRiskLevel.Value = "Moderate", "Blue",
Fields!CurrentRiskLevel.Value = "Medium", "Yellow",
Fields!CurrentRiskLevel.Value = "High", "Orange",
Fields!CurrentRiskLevel.Value = "Very High", "Red"
)