基于其他群体价值的SSRS条件文本颜色

时间:2016-01-06 18:02:03

标签: reporting-services ssrs-tablix

为了简化我的需求:我将预计的销售数量与预算的销售数量进行比较,并根据它们是否小于,等于或大于相应的计划,将投影数量设置为红色,黑色或绿色。金额。基本上我的数据归结为

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

我的Tablix正在使用基于Type的列分组。

我尝试了下面的表达式,但是当它应该是Red时它给了我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

2 个答案:

答案 0 :(得分:2)

我认为如果您更改查询以不同方式检索数据会更容易。但是,我将公开SSRS和T-SQL解决方案:

SSRS解决方案:

将计算字段添加到数据集并连接GroupType

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

我正在使用您在问题中添加的数据来重新创建您的方案。假设您使用矩阵来获得所需的输出,请使用此数据排列:

enter image description here

现在在Amount单元格字体颜色属性中使用以下表达式:

=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

它将预览以下矩阵:

enter image description here

  

此解决方案仅在您只比较两种不同类型时才有效:   ProjectedPlan

T-SQL解决方案(推荐):

更改数据集查询以正确的方式获取数据以进行比较。根据您发布的表格,我使用了此查询。

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 :(得分: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"))