Report Builder 3.0 (SSRS) - 根据列组中的最大值突出显示矩阵中的行

问题描述

我的任务是用一个矩阵编写报告,该矩阵按行和列对数据进行分类和分组,我被告知每行必须是特定颜色,具体取决于最大计数出现在哪个列组中。

>

所以我创建了我的矩阵。在行上,它首先按州分组,然后按城市分组,底部一个总行。列组基于我创建的两个计算字段。以下是他们的标签和表达:

自上次更新后的天数

=DateDiff(DateInterval.Day,Fields!RECORD_UPDATED_DATE.Value,Today())

DaysSinceUpdateGrouping

=Switch(Fields!DaysSinceLastUpdate.Value<91,"Less Than 90 Days",Fields!DaysSinceLastUpdate.Value<181,"91-180 Days",Fields!DaysSinceLastUpdate.Value<365,"181-365 Days",Fields!DaysSinceLastUpdate.Value>=365,"More Than 1 Year")

所以我的表是这样的:

状态 城市 DaysSinceUpdateGrouping 总记录
城市 Countdistinct(RecordID) Countdistinct(RecordID)
状态 总计 Countdistinct(RecordID) Countdistinct(RecordID)
总计 Countdistinct(RecordID) Countdistinct(RecordID)

当报表运行时,用户使用参数选择一个或多个状态。如果用户只选择俄勒冈州,结果可能如下所示:

状态 城市 少于 90 天 91-180 天 181-365 天 1 年以上 总记录
波特兰 50 80 100 10 240
尤金 40 20 60 100 220
弯曲 100 10 0 20 130
俄勒冈 总计 190 110 160 130 590
总计 190 110 160 130 590

我想要做的是根据最大值出现的位置使每一整行改变颜色。对于波特兰,最高值位于“181-365”天列中,因此我希望该行为橙色。对于 Eugene,最高值位于“超过 1 年”列中,因此我希望该行为红色。对于 Bend,最高值位于“Less Than 90 Days”列中,因此我希望该行为绿色。 Oregon 和 Total 行也应该是绿色的。 (如果“91-180 天”列具有最大值,则其关联行应为黄色。)

我选择了要应用背景颜色规则的单元格,并将此表达式应用于 Fill 属性

=switch(max(Fields!DaysSinceUpdateGrouping.Value,"City")="Less Than 90 Days","LimeGreen",max(Fields!DaysSinceUpdateGrouping.Value,"City")="91-180 Days","Yellow","City")="181-365 Days","Orange","City")="More Than 1 Year","Tomato")

但这一行总是变成红色。

知道我做错了什么吗?如何告诉 Fill 表达式为每一行找到列组中的最大值?

解决方法

我明白了!除了列组之外,我还必须为 DaysSinceUpdateGrouping 添加一个行组。然后我删除了出现的列,但将组留在原地。这样,在我的单元格颜色的 Switch 表达式中,我能够用“DaysSinceUpdateGrouping1”替换“City”,以便参考计算详细信息,而不是城市总数。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...