【发布时间】:2021-07-30 18:34:03
【问题描述】:
我的任务是编写一份带有矩阵的报告,该矩阵按行和列对数据进行分类和分组,我被告知每行必须是特定颜色,具体取决于最大计数出现在哪个列组中。
所以我创建了我的矩阵。在行上,它首先按州分组,然后按城市分组,底部有一个总行。列组基于我创建的两个计算字段。以下是它们的标签和表达方式:
DaysSinceLastUpdate
=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")
所以我的表是这样的:
| State | City | DaysSinceUpdateGrouping | Total Records |
|---|---|---|---|
| City | CountDistinct(RecordID) | CountDistinct(RecordID) | |
| State | Total | CountDistinct(RecordID) | CountDistinct(RecordID) |
| Total | CountDistinct(RecordID) | CountDistinct(RecordID) |
当报表运行时,用户使用参数选择一个或多个状态。如果用户只选择了俄勒冈州,结果可能如下所示:
| State | City | Less Than 90 Days | 91-180 Days | 181-365 Days | More Than 1 Year | Total Records |
|---|---|---|---|---|---|---|
| Portland | 50 | 80 | 100 | 10 | 240 | |
| Eugene | 40 | 20 | 60 | 100 | 220 | |
| Bend | 100 | 10 | 0 | 20 | 130 | |
| Oregon | Total | 190 | 110 | 160 | 130 | 590 |
| Total | 190 | 110 | 160 | 130 | 590 |
我想要做的是让每一行根据最大值出现的位置改变颜色。对于波特兰,最高值在“181-365”天列中,所以我想要那行橙色。对于 Eugene,最高值在“超过 1 年”列中,因此我希望该行为红色。对于 Bend,最高值在“少于 90 天”列中,因此我希望该行为绿色。 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", max(Fields!DaysSinceUpdateGrouping.Value, "City")="181-365 Days","Orange", max(Fields!DaysSinceUpdateGrouping.Value, "City")="More Than 1 Year","Tomato")
但行总是变红。
知道我做错了什么吗?如何让 Fill 表达式找到列组中每一行的最大值?
【问题讨论】:
标签: matrix expression grouping conditional-formatting reportbuilder3.0