计算 SSRS 报告中多个组列之间的差异
Calculate difference between multiple group columns in SSRS Report
Whosebug 中的第一个 post - 如果我不正确,请原谅我。我有一个 SSRS 报告,其中包含一个矩阵,该矩阵每年按零件号对数量、总支出和平均成本进行分组。零件号和描述位于左侧,年份位于顶部。我想在第一年之后的每一年中添加一个增量列,显示与上一年相比的价格变化。我已经看到了如何获得第一年和去年之间差异的示例 - 但不是每年与前一年之间的差异。我隐藏了第一年的 delta 列 - 没有人会喜欢一些关于如何计算成本差异的指导。
因此,从下面的图片来看,2019 财年下的增量列中的第一行将显示 - 0.01 欧元,因为价格已从 0.59 降至 0.58。
你还没有解释如果平均。成本是在您的报告中计算出来的,但我假设它就像 =SUM(Fields!Spend.Value) / SUM(Fields!Qty.Value)
你没有展示你的报告设计,所以我无法知道你的 row/column 组叫什么,但我假设你有一个按部分的行组和一个按年的行组。假设您的列组名称是 PeriodID
,因此它与我的演示报告相同。
在这种情况下,您可以使用 PREVIOUS()
函数获取要比较的先前值。
我建立了一个类似的报告来演示。正如您在我的例子中看到的那样,年份列使用名为 PeriodID
的列组进行分组
突出显示的表达式如下。
价格。这只是 Cost/Qty =SUM(Fields!Cost.Value)/SUM(Fields!Qty.Value)
最后价格。这只是为了说明和调试。它使用PREVIOUS()
函数获取上一年的数据
=Previous(Sum(Fields!Cost.Value), "PeriodID") / Previous(Sum(Fields!Qty.Value), "PeriodID")
请注意,“PeriodID”是列组的名称(区分大小写)。这是上一个函数的作用域,因此它知道从上一个列组获取数据。
增量。这是最终的输出。它只是当前的“Price”表达式减去“lastprice”表达式。
=(Sum(Fields!Cost.Value) / Sum(Fields!Qty.Value)) - (Previous(Sum(Fields!Cost.Value), "PeriodID") / Previous(Sum(Fields!Qty.Value), "PeriodID"))
最终输出如下所示(我没有隐藏第一个列组的列或隐藏最后价格,只是为了让您看到它的工作原理)。此外,如果您发现 delta 列与您预期的略有不同,那是因为数字的格式为 2 位小数,但我的测试数据最多为 14 位小数。
Whosebug 中的第一个 post - 如果我不正确,请原谅我。我有一个 SSRS 报告,其中包含一个矩阵,该矩阵每年按零件号对数量、总支出和平均成本进行分组。零件号和描述位于左侧,年份位于顶部。我想在第一年之后的每一年中添加一个增量列,显示与上一年相比的价格变化。我已经看到了如何获得第一年和去年之间差异的示例 - 但不是每年与前一年之间的差异。我隐藏了第一年的 delta 列 - 没有人会喜欢一些关于如何计算成本差异的指导。
因此,从下面的图片来看,2019 财年下的增量列中的第一行将显示 - 0.01 欧元,因为价格已从 0.59 降至 0.58。
你还没有解释如果平均。成本是在您的报告中计算出来的,但我假设它就像 =SUM(Fields!Spend.Value) / SUM(Fields!Qty.Value)
你没有展示你的报告设计,所以我无法知道你的 row/column 组叫什么,但我假设你有一个按部分的行组和一个按年的行组。假设您的列组名称是 PeriodID
,因此它与我的演示报告相同。
在这种情况下,您可以使用 PREVIOUS()
函数获取要比较的先前值。
我建立了一个类似的报告来演示。正如您在我的例子中看到的那样,年份列使用名为 PeriodID
突出显示的表达式如下。
价格。这只是 Cost/Qty =SUM(Fields!Cost.Value)/SUM(Fields!Qty.Value)
最后价格。这只是为了说明和调试。它使用PREVIOUS()
函数获取上一年的数据
=Previous(Sum(Fields!Cost.Value), "PeriodID") / Previous(Sum(Fields!Qty.Value), "PeriodID")
请注意,“PeriodID”是列组的名称(区分大小写)。这是上一个函数的作用域,因此它知道从上一个列组获取数据。
增量。这是最终的输出。它只是当前的“Price”表达式减去“lastprice”表达式。
=(Sum(Fields!Cost.Value) / Sum(Fields!Qty.Value)) - (Previous(Sum(Fields!Cost.Value), "PeriodID") / Previous(Sum(Fields!Qty.Value), "PeriodID"))
最终输出如下所示(我没有隐藏第一个列组的列或隐藏最后价格,只是为了让您看到它的工作原理)。此外,如果您发现 delta 列与您预期的略有不同,那是因为数字的格式为 2 位小数,但我的测试数据最多为 14 位小数。