基于背景颜色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")
在我的 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")