基于其他组值的 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 + Plan 与 Projected 的总和,所以它总是更大。
=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解决方案:
向您的数据集添加一个计算字段并连接 Group
和 Type
。
=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 中计划金额和预计金额之间的比较微不足道。
如果这对你有帮助,请告诉我。
为了简化我的需求:我正在将预计销售额与预算销售额进行比较,需要根据预计金额小于、等于或大于相应的计划金额。基本上我的数据归结为
║ 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 + Plan 与 Projected 的总和,所以它总是更大。
=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解决方案:
向您的数据集添加一个计算字段并连接 Group
和 Type
。
=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
andPlan
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 中计划金额和预计金额之间的比较微不足道。
如果这对你有帮助,请告诉我。