0

我在报告中有这样的表达:

=iif(
SUM(Fields!Amount.Value) >
    (
    SUM(iif
        (
        Fields!Date.Value >= DateAdd("d",-10,TODAY())
        ,Fields!Amount.Value
        ,CDbl(0)
        )) / 10
    )*2.0,
"Gold",
"Transparent"
)

它控制表格的文本框背景颜色。

如果单元格中的数量是该特定行的 10 天平均值的两倍或更多,我希望它将单元格变为金色。

该表显示了 10 天的数据,它使用的数据集包含 60 天的数据,因此应该可以使用 10 天的平均值。

表达不正确吗?

这就是它当前正在创建的内容 - 完全橙色的两行显然不是我想要的。

在此处输入图像描述

4

1 回答 1

1

问题在于您为创建平均值所做的总和。它实际上只是将遇到的第一个数字相加,然后除以 10 并乘以 2。您需要将总和的范围更改为整个数据集。以下是我证明这一点的方法。

我以上面表格中的第二行数字为例。这是我的查询。

SELECT        '1/15/14' AS dt, 1 AS value
UNION
SELECT        '1/16/14' AS dt, 7 AS value
UNION
SELECT        '1/17/14' AS dt, 5 AS value
UNION
SELECT        '1/18/14' AS dt, 6 AS value
UNION
SELECT        '1/19/14' AS dt, 4 AS value
UNION
SELECT        '1/20/14' AS dt, 5 AS value
UNION
SELECT        '1/21/14' AS dt, 5 AS value
UNION
SELECT        '1/22/14' AS dt, 5 AS value
UNION
SELECT        '1/23/14' AS dt, 6 AS value
UNION
SELECT        '1/24/14' AS dt, 6 AS value

我在数据的列值中创建了一个带有 dt 的 tablix。如果我把你的平均计算放在下面的一行中,每列都会返回 9.8。

我首先使用您的填充表达式来确保我得到与您相同的结果。然后我改变它以获得正确的答案:

=iif(Sum(Fields!value.Value) >  
(Sum(iif(Fields!dt.Value >= Dateadd("d",-10, today()), Fields!value.Value, CDbl(0)), "DataSet1")/10) * 2,
"Gold","White")

根据我掌握的数据,没有一个细胞应该变成金色,这就是我得到的结果。如果我将 1/15 的值更改为 20,然后预览我的表格,该单元格将变为金色,因为 69/10*2 = 13.8 且 20 > 13.8。

于 2014-01-28T16:22:16.893 回答