SSRS总计基于表达值

时间:2015-02-12 14:05:54

标签: reporting-services ssrs-2008-r2

我试图创建一个基于计算的总数来提供毛重。现在,在有人建议(修改SQL以提供结果然后在SSRS中总计)之前,这来自我无法访问的动态AX查询。这是我的报告

enter image description here

给出了结果

enter image description here

以红色突出显示的总数是错误的(如果你将这些行加起来,它应该是18043.25)。我通过右键点击毛重表达式并完成了“添加总计'

”。

毛重的表达(在线水平)

=SUM(Fields!qty.Value * (Fields!NetWeight.Value + Fields!TaraWeight.Value)) + IIF(Fields!palletTypeId.Value = "Pallecon", Fields!PalleconWeightKg.Value, Fields!BluePalletWeightKg.Value + Fields!PackagingWeightKg.Value)

总和位非常简单,只需加上净重和重量,但需要添加托盘重量,这取决于它是否是一个pallecon。总计似乎是在添加IIF(Fields!palletTypeId.Value = "Pallecon", Fields!PalleconWeightKg.Value, Fields!BluePalletWeightKg.Value + Fields!PackagingWeightKg.Value

只有一次而不是评估每一行和求和。我尝试将表达式包装在另一个SUM中但是我的总重量大约是23300,这太高了。正如我之前所说,我应该得到18043.25。你如何根据另一列的总表达式进行总计?谢谢!

*更新* 总表达式测试

(test1) =SUM(Fields!qty.Value * (Fields!NetWeight.Value + Fields!TaraWeight.Value)) + RunningValue(IIF(Fields!palletTypeId.Value = "Pallecon", Fields!PalleconWeightKg.Value, Fields!BluePalletWeightKg.Value + Fields!PackagingWeightKg.Value), Sum, "Group1") = 23323.22

(test2) =RunningValue(SUM(Fields!qty.Value * (Fields!NetWeight.Value + Fields!TaraWeight.Value)) + IIF(Fields!palletTypeId.Value = "Pallecon", Fields!PalleconWeightKg.Value, Fields!BluePalletWeightKg.Value + Fields!PackagingWeightKg.Value), SUM, "Group1") = 3267881.87

(test3) =RunningValue(Fields!qty.Value * (Fields!NetWeight.Value + Fields!TaraWeight.Value) + IIF(Fields!palletTypeId.Value = "Pallecon", Fields!PalleconWeightKg.Value, Fields!BluePalletWeightKg.Value + Fields!PackagingWeightKg.Value), SUM, "Group1") = 23323.22

经过多次测试后,我相信我在分组的某个地方有一个问题...我认为这应该给我以后我作为一个完整的表达方式。如果我错了,请纠正我。

=SUM(Fields!qty.Value * (Fields!NetWeight.Value + Fields!TaraWeight.Value)) + RunningValue(IIF(Fields!palletTypeId.Value = "Pallecon", Fields!PalleconWeightKg.Value, Fields!BluePalletWeightKg.Value + Fields!PackagingWeightKg.Value), SUM, "Group1") = 23323.21805

哪个太高了。我在它上面运行了这个表达式,它给了我每行约1056个33,所以我不知道额外的来自哪里...

*进一步更新*

我想我已经发现了与这个表达有关的问题:

IIF(Fields!palletTypeId.Value = "Pallecon", Fields!PalleconWeightKg.Value, (Fields!BluePalletWeightKg.Value + Fields!PackagingWeightKg.Value))

每行33公斤。

然而SUM(IIF(Fields!palletTypeId.Value = "Pallecon", Fields!PalleconWeightKg.Value, (Fields!BluePalletWeightKg.Value + Fields!PackagingWeightKg.Value)))

总字段中的

给出6336.我应该得到33 * 32行= 1056。

额外的5000来自哪里?!?!?!?

2 个答案:

答案 0 :(得分:0)

您的括号表示您的IIF声明只应添加一次。

为了清晰起见,简化字段名称显示了我

=SUM ( 
      A * (
          B + C
     )
 ) + 
 IIF(
     D, E, F + G
 )

甚至更简单

SUM ( X ) + conditional

当你想要

SUM ( X + conditional )

情况不是这样吗?

答案 1 :(得分:0)

我的同事提出了另一种解决方案。仍然不确定为什么另一个没有正常工作,但这有效!

=SUM(Fields!qty.Value * (Fields!NetWeight.Value + Fields!TaraWeight.Value)) + (Sum(IIf(Fields!palletTypeId.Value = "Pallecon",1,0)) * Max(Fields!PalleconWeightKg.Value))+(CountDistinct(Fields!wMSPalletId2.Value) - Sum(IIf(Fields!palletTypeId.Value = "Pallecon",1,0))) * (Max(Fields!BluePalletWeightKg.Value) + Max(Fields!PackagingWeightKg.Value))