基于背景颜色ssrs求和

sum based on background color ssrs

在我的 table 中,在 20 条记录中,我根据以下表达式得到 4 条记录 "Red":

=Switch(DateDiff(DateInterval.Hour, Fields!SLA.Value, Now())<=72,"White",Fields!SLA.Value<now(),"Red",true,"White")

我想根据背景颜色 "RED" 求和 "count_of_value"。

这就是我正在尝试的。但是,它显示错误。

="The number is " & IIF("Red",Sum(Fields!count_of_value.Value, "DataSet1"),'') & "."

and 

 ="The number is " & Sum(IIF("Red",Sum(Fields!count_of_value.Value, "DataSet1"),'')) & "."

有两件事我想实现:

从第 1 列开始,我想获取颜色的最后日期 "RED"。例如,在这种情况下,02/05/2019.

从第 2 列开始,我想得到颜色为 "RED" 的数字的总和。例如,在这种情况下,214519

我在做什么?如何做到这一点? 谢谢

你的 IIF 声明基本上只是说 "If 'Red' = True",它总是 return false。

您需要将其与您拥有颜色表达的 'cell' 进行比较。

如果该单元格称为 myTextBox 那么您的 SUM 表达式将类似于(简化)

=SUM(
    IIF(ReportItems!myTextBox.Value = "Red", Fields!count_of_value.Value, 0)
    )

或者,您可以在 IIF 语句中重复整个颜色表达式。

如果这没有帮助,请编辑您的问题以显示报告设计的图像,包括任何分组和每个表达式的位置。

也许我过于简化了你的问题陈述,但我尝试在本地机器上使用虚拟数据。

=DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)

新的临时列来捕捉数字

=IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,0,
IIF(Fields!SLAValue.Value<now,DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now),0))

现在专栏

=now

彩色列表达式

=IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,"White",
IIF(Fields!SLAValue.Value<now,"Red","white"))

最后一个 Count_Value 表达式

=Sum(
IIF(DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now)<=72,0,
IIF(Fields!SLAValue.Value<now,DateDiff(DateInterval.Hour,Fields!SLAValue.Value,now),0)))

这里看起来有点像 XY problem。您的表达式根据 SWITCH 语句为单元格着色。要解决求和问题,您需要使用用于为单元格着色的相同条件语句。基本上,您需要的表达式应该如下所示。

= SUM(IIF(Fields!SLA.Value<now(), Fields!count_of_value.Value, 0), "DataSet1")

此表达式应隔离 SWITCH 着色为红色的相同字段,对它们求和,如果它们的计算结果不为真,则加零。由于您对另一个答案的评论表明您收到了指示范围不足的错误,因此您需要将数据集名称包含在 SUM 函数中。

至于从另一列获取最后一个日期值,您应该能够使用类似的表达式,但使用 MAX 函数。

=MAX(IIF(Fields!SLA.Value<now(), Fields!SLA.Value, Nothing), "DataSet1")