基于其他组值的 SSRS 条件文本颜色

SSRS Conditional Text Color Based On Other Group's Value

为了简化我的需求:我正在将预计销售额与预算销售额进行比较,需要根据预计金额小于、等于或大于相应的计划金额。基本上我的数据归结为

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

我的 tablix 使用基于 Type 的列分组。

我尝试了以下表达式,但它在应该是红色的时候给了我绿色。 =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"))

我想要的输出如下:

我认为你的问题是你正在比较 Projected + PlanProjected 的总和,所以它总是更大。

=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"))

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

SSRS解决方案:

向您的数据集添加一个计算字段并连接 GroupType

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

我正在使用您在问题中输入的数据来重新创建您的场景。假设您使用矩阵来获得所需的输出,只需使用此数据排列:

现在在 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

它将预览以下矩阵:

This solution will only work if you compare only two different types: Projected and Plan

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

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

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'

它产生:

自己试试这个 fiddle:

使用 T-SQL 解决方案,SSRS 中计划金额和预计金额之间的比较微不足道。

如果这对你有帮助,请告诉我。