如何添加类似Excel的"色标"基于最小值和最大值的SSRS报告中的红黄绿条件格式

时间:2016-08-09 21:56:47

标签: sql reporting-services heatmap

如何根据最小值和最大值在SSRS中创建热图? 现在我使用SWITCH功能来区分颜色。

    =
    SWITCH 
        (Fields!.Value = 0, "Coral",
            Fields!.Value >=1  and Fields!.Value <= 5 , "Yellow", 
            Fields!.Value >=6  and Fields!.Value <= 10 , "Gold", 
            Fields!.Value >= 11 and Fields!.Value <= 16,"#bdff30",
             Fields!.Value >= 17 and Fields!.Value <= 22,"#7fda24",
Fields!.Value >= 55 ,"#0ca102")

但是我怎么能告诉SSRS,例如在5个不同的值之间选择热图颜色,让我们说从红色到绿色的阴影并将这些颜色分配给单元格中的每个值? 应该是这样的: enter image description here

2 个答案:

答案 0 :(得分:2)

我认为你不需要编写代码。 我正在考虑这样的事情:

 =SWITCH 
(Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (5 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)) ,"#0ca102"
 Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (4 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)) ,"#7fda24"
 Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (3 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)),"#bdff30"
 Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + (2 *((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6)),"Gold"
 Fields!.Value >= Min(Fields!myField.Value, "DataSetName") + ((Max(Fields!myField.Value, "DataSetName")-Min(Fields!myField.Value, "DataSetName"))/6),"Yellow"
 1=1,"Coral")

例如,对于5到60的值,测试变为:

     =SWITCH 
(Fields!.Value >= 50.83 ,"#0ca102"
 Fields!.Value >= 41.67,"#7fda24"
 Fields!.Value >= 32.5,"#bdff30"
 Fields!.Value >= 23.33,"Gold"
 Fields!.Value >= 14.17,"Yellow"
 1=1,"Coral")
我真的不擅长数学。也许(绝对)更好的公式...... 它只是为了表明我会说什么^^ 用百分比推导出范围。

答案 1 :(得分:0)

首先:使用开关:它采用第一个正确的值:因此您不需要编写2个条件来测试值。把它们从最大到最小。 例如:

 =
SWITCH 
    (Fields!.Value >= 55 ,"#0ca102"
     Fields!.Value >= 17 ,"#7fda24"
     Fields!.Value >= 11,"#bdff30"
     Fields!.Value >= 6,"Gold"
     Fields!.Value >= 1,"Yellow"
     1=1,"Coral")

要获得可能的最大值:使用“MAX”功能(和MIN相同)。这里不要忘记引用所有数据集(如果是组)。因此,当您对所有数据集使用max时,就像那样:

=Max(Fields!myField.Value, "DataSetName")

然后,您可以使用min和max进行操作,然后重新调整固定值。但是我无法帮助你,因为我对数学并不擅长。