我正在使用SSRS矩阵控制开发报告。
以下是我正在使用的示例表
以下是我在SSRS中使用矩阵工具尝试实现的目标
现在描述
报告需要记录类型A,B,C及其案例数量,按位置代码对其进行分组。第6行将包含从第4行和第5行(类型A和类型B)派生的计算值。
如屏幕截图所示,用于推导结果($ 44)的公式是使用公式
(Case Value of Type B * average of Type B) + (Case Value of Type C * average of Type C)
-------------------------------------------------------------------------------------
(Case Value of Type B + Case Value of Type C)
所以44美元的价值可以实现
(57 * 18) + (44 * 78) / (57 + 44)
有人请求指导我如何在ssrs中实现这一点。 我已经制定了结构但无法计算总价值。
答案 0 :(得分:1)
这取决于你获得平均值的方式。这种情况是在您预先确定的情况下发生在幕后,还是基于您可以加入的其他表格进行?
如果全部都在数据集中,我会这样做:
确定既是数据又是平均值的数据集。我不确定你是来自SQL还是只是在Excel中这样做。我暂时会在SQL中伪装:
declare @Avgs Table ( location int, type varchar(1), cs int, average int);
insert into @Avgs values (1, 'A', 21, 10),(1, 'B', 57, 18),(1, 'C', 44, 78);
Select top 10 *
from @Avgs
您可能想要添加一个'计算列'或直接在SQL中进行数学计算,因为SSRS中的表达式编辑器通常可以用于一个函数或两个函数,但是当你有一个非常复杂的数学时我会发现SQL引擎更适合处理它。这也可以让以后更好地改变现状。
所以我会修改SQL:
declare @Avgs Table ( location int, type varchar(1), cs int, average int);
insert into @Avgs values (1, 'A', 21, 10),(1, 'B', 57, 18),(1, 'C', 44, 78);
With a as
(
select *, cs * average as compound
from @Avgs
)
, b as
(
Select
(max( case when type = 'B' then compound end) + max( case when type = 'C' then compound end)) /
(max( case when type = 'B' then cs end) + max( case when type = 'C' then cs end)) as CompoundMath
from a
)
select *
from a, b
这将是你在SSRS中的数据集,复合函数可以在'when'为逻辑之后(在...之后的情况下)在'then'结果之后进行更改。
只需添加一个新行,就可以将自定义表达式设置为名为“复合数学”的列。