基于背景色ssrs的总和

时间:2019-05-14 07:29:42

标签: sql-server reporting-services ssrs-expression ssrs-2017

在我的表中,根据以下表达式,在20条记录中,我得到4条记录“红色”:

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

enter image description here

我想基于背景颜色“ 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"),'')) & "."

我想实现两件事:

从第一列,我想获取颜色“ RED”的最后日期。例如,在这种情况下,2019年2月5日。

从第二列中,我想获取颜色为“红色”的数字的总和。例如,在这种情况下为214519

我在做什么?如何实现呢? 谢谢

3 个答案:

答案 0 :(得分:1)

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

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

该表达式应隔离SWITCH用红色涂成的相同字段,对它们求和,如果不等于true,则加零。由于您对另一个答案的评论表明您收到错误提示,表明范围不足,因此您需要在SUM函数中包含数据集名称。

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

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

答案 1 :(得分:0)

您的IIF语句基本上只是说“如果'Red'= True”,它将始终返回false。

您需要将其与具有颜色表示的“单元格”进行比较。

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

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

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

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

答案 2 :(得分:0)

也许我简化了您的问题陈述,但是我尝试在本地计算机上使用伪数据。

enter image description here

=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"))

最后一个计数值表达式

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