2014-01-25 32 views
0

兩次,我在報告中得到這個表達式:表達式更改背景顏色,如果10天的平均

=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天的平均值。

表達式是否正確?

這就是它正在創建的 - 完全是橙色的兩行顯然不是我想要的。

enter image description here

+0

爲什麼你有DateAdd(「d」, - 30,TODAY())?我以爲你只是將它與10天的平均值進行比較? – mmarie

+0

@mmarie apologies - typo:表達式使用說10。我已經結束了添加另一列TenDayAvg到我的'DataSet',因此簡化這個表達式來比較那個列 - 現在的格式工作.....但我'米仍然有興趣知道爲什麼上述失敗。 – whytheq

回答

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。

+0

+1優秀 - 這個額外範圍參數是否可用於所有聚合函數?有一點有點奇怪 - 你說(我相信你)「它只是自我加總,然後除以10,再乘以2」......如果這是真的,那麼我的屏幕打印應該顯示** no **金細胞? – whytheq

+0

範圍參數也可用於其他聚合。這裏有一個[link](http://technet.microsoft.com/en-us/library/dd255275.aspx#CalculatingAggregates),你可以在這裏看到它。我更新了我的答案,以更準確地解決第二個問題。它不僅僅是總結這個數字,它只是總結它遇到的第一個數字。 – mmarie