为了简化我的需求:我将预计的销售数量与预算的销售数量进行比较,并根据它们是否小于,等于或大于相应的计划,将投影数量设置为红色,黑色或绿色。金额。基本上我的数据归结为
║ 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"))
我想要的输出如下:
答案 0 :(得分:2)
我认为如果您更改查询以不同方式检索数据会更容易。但是,我将公开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
。
它将预览以下矩阵:
此解决方案仅在您只比较两种不同类型时才有效:
Projected
和Plan
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'
它产生:
通过此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"))