2016-01-06 89 views
1

爲了簡化我的需要:我將預計銷售數量與預算銷售數量進行比較,並且需要根據預測銷售數量是否小於紅色,黑色或綠色,等於或大於相應的計劃金額。基本上我的數據歸結爲基於其他集團價值的SSRS條件文本顏色

║ Group ║ Amount ║ Type ║ 
╠═══════╬════════╬═══════════╣ 
║  1 ║ .95 ║ Projected ║ 
║  2 ║ 0  ║ Projected ║ 
║  3 ║ .04 ║ Projected ║ 
║  1 ║ 1.3 ║ Plan  ║ 
║  2 ║ 0  ║ Plan  ║ 
║  3 ║ .03 ║ Plan  ║ 

我的表矩陣是使用基於Type一列分組。

我嘗試了下面的表達式,但是它應該是紅色時給了我Green。 =iif(SUM(Fields!Amount.Value)<SUM(iif(Fields!Type.Value = "Plan",Fields!Amount.Value,0),"Type"),"Red",iif(SUM(Fields!Amount.Value)>SUM(iif(Fields!Type.Value = "Plan",Fields!Amount.Value,0),"Type"),"Green","Black"))

我的期望輸出如下:

enter image description here

+0

您使用矩陣嗎?或者您有兩個不同的投影量和計劃量字段? –

+0

@alejandrozuleta矩陣。但現在我想到了,重寫存儲過程可能會更容易,使其成爲2個不同的字段。 – Boone

回答

2

我認爲這將是,如果你改變你的查詢以不同的方式來檢索數據更容易。不過,我會公開一個SSRS和T-SQL的解決方案:

SSRS解決方案:

計算字段添加到您的數據集並連接所有的GroupType

=Fields!GroupID.Value & "-" & Fields!AmountType.Value 

我正在使用您放入問題中的數據來重新創建您的場景。假如你使用的是矩陣,以獲得所需的輸出只需要使用這些數據安排:

enter image description here

現在量的細胞字體顏色屬性中使用下列表達式:

=IIF(
Fields!AmountType.Value="Projected", 
    IIF(
    Fields!Amount.Value > 
    Lookup(Fields!Group.Value & "-" & "Plan",Fields!GroupType.Value,Fields!Amount.Value,"DataSet3"), 
    "Green", 
     IIF(
      Fields!Amount.Value < 
      Lookup(Fields!Group.Value & "-" & "Plan",Fields!GroupType.Value,Fields!Amount.Value,"DataSet3"), 
      "Red","Black" 
     ) 
    ),"Black" 
) 

你必須改變Fields!GroupType.Value根據您爲計算字段設置的名稱。

它將預覽下面的矩陣: ProjectedPlan

T-SQL解決方案:

enter image description here

,如果你只比較兩種不同類型的這一解決方案只會工作(推薦):

更改您的數據集查詢以正確方式獲取數據以進行比較。根據你發佈的表格,我使用了這個查詢。

SELECT 
    a.GroupID, 
    a.Amount [Projected], 
    pl.Amount [Plan] 
FROM your_table a 
INNER JOIN (SELECT 
    * 
FROM your_table 
WHERE AmountType = 'Plan') pl 
    ON a.GroupID = pl.GroupID 
WHERE a.AmountType = 'Projected' 

它產生:

enter image description here

fiddle嘗試自己:

隨着T-SQL的解決方案計劃量和預測量之比較是微不足道的SSRS。

讓我知道這是否對你有幫助。

+1

我重寫了我的查詢,但感謝您解釋這兩種方法。 – Boone

1

我覺得你的問題是,你預計+計劃與預計總數的進行比對,這將永遠是更大的。

=IIF(SUM(IIF(Fields!Type.Value = "Projected", Fields!Amount.Value, 0)) < SUM(IIF(Fields!Type.Value = "Plan",Fields!Amount.Value,0),"Type"), "Red", 
IIF(SUM(IIF(Fields!Type.Value = "Projected", Fields!Amount.Value, 0)) > SUM(iif(Fields!Type.Value = "Plan",Fields!Amount.Value,0),"Type"), "Green", "Black")) 
+0

我想我明白你在說什麼,我正在考慮嘗試這樣的事情。但是我認爲在我當前的tablix設置下,您錯過了列分組過濾從計劃投射。所以,當我說'iif(SUM(Fields!Amount.Value)<'時,它應該只是根據列分組顯示的總和計劃或計劃。我認爲如果刪除列分組,那麼我需要修改我的'SUM'公式,這可能是我必須做的。 – Boone

+0

啊 - 我錯過了分組。現在我想更多了,這是因爲你沒有過濾你的數據集SUM和你的** GROUP **(1,2,3)你可以改變你的字段以通過PLAN或Projected進行過濾,或者使用LOOKUP SUM來通過'LookupSet(Fields!Group.Value&「| &「Projected」,Fields!Group.Value&「|」&Fields!Type.Value,Fields!Amount.value,「Type」)'並將總和相加 –