计算 SSRS 中组列内的增长百分比

Calculate growth percentage inside a group column in SSRS

我目前正在构建一个报告,其中包含一个 table 列组和月值组,因此它会根据我的用户选择的范围动态地创建月份列。

table design

我们需要的是,在每个 Valuación 列中,我们显示一个 Crecimiento(增长)列。为此,需要将上个月的[SUM(Diferencia)]视为100%,以应用三者的规则

目前,这是我放在字段上的公式

=IIF(
Fields!Mes.Value = 1, 
0,
(Sum(Fields!Diferencia.Value)/
ReportItems!Diferencia.Value)
)

(Mes = 月)

但是,如您所知,它总是 returns 100%,因为 Sum(Fields!Diferencia.Value) = ReportItems!Diferencia.Value)(谁会猜到)

我试过 Fields!Diferencia.Value & Sum(Fields!Diferencia.Value, "Informacion")(第二个是我在数据集类别中搜索Diferencia后得到的)

Datasets category

但还是不明白如何引用上个月的 Sum(Fields!Diferencia.Value)

知道这怎么可能吗?

提前谢谢大家

编辑 1:我正在添加实时预览图像,以向您展示数据在实际运行时的显示方式

Edit 1 image

您可以使用 PREVIOUS 函数从之前的范围内获取数据(在您的例子中是上个月)。

我不确定您想要显示什么,但这个简单的表达式将显示当前月份的值与上个月的值的百分比。例如,如果一月是 50,二月是 60,那么它将 return 1.2(如果您使用 "p2" 格式字符串进行格式化,则为 120%)

已更新这部分答案: 使用类似这样的东西

= (Sum(Fields!Diferencia.Value)) / Previous(Sum(Fields!Diferencia.Value), "Mes1")

注意:组名"Mes1"区分大小写

它如何知道要对哪些值求和?很难解释清楚,但简短的版本是你的表达式位于列组 'Mes1' 内,所以 SUM(Fields!Diferencia.Value) 表示 sum Fields!Diferencia.Value 在当前范围内,当前范围是月份团体。当我们使用 PREVIOUS 函数时,会发生完全相同的事情,只是这次我们告诉 SSRS 使用来自同一范围的前一组数据。范围仍然是您的月份组 Mes1,但我们只是从上一个组条目(在本例中为上个月)获取数据。希望这是有道理的!

样本报告 我基于NorthWind示例数据库构建了一份测试报告。

数据集仅包含按月份和国家/地区分类的总订单价值。

我添加了一个矩阵并将行组设置为Country,列组设置为OrderMonth,数据值设置为OrderValue

我添加了一些额外的列来显示以前的和计算的增长值。

设计看起来像这样。

组内每一列的表达式是

当前:

  =Sum(Fields!OrderValue.Value)

上一个:

=PREVIOUS(Sum(Fields!OrderValue.Value), "OrderMonth")

Current/Previous =

=IIF(PREVIOUS(Sum(Fields!OrderValue.Value), "OrderMonth") = 0 , 0, Sum(Fields!OrderValue.Value))
/
IIF(PREVIOUS(Sum(Fields!OrderValue.Value), "OrderMonth") = 0 , 1, PREVIOUS(Sum(Fields!OrderValue.Value), "OrderMonth") )

最终输出如下所示,希望是您所需要的。