【问题标题】:Using outer Group Totals to calculate inner Group Percentages in SSRS 2008R2使用外部组总计计算 SSRS 2008R2 中的内部组百分比
【发布时间】:2019-06-04 22:15:10
【问题描述】:

我正在编写 SSRS 2008R2 中的英国损益报告,并且正在努力计算百分比

这是一个解释我的问题的例子

                 Detail     
Group1  Group2  Invoice Number  Value   %
Sales Total                       810   
        Uk Sales                  150   
                 UK964423          50   
                 UK452872         100   
        European Sales            450   
                 dkkmalk          200   
                 dkf682           250   

        Rest of World Sales       210   
                 USA12353         100   
                 CHIN25410        100   
                 AFGAN14422        10   

Variable Costs                    455   56%
        Material                  200   25%
                 Sand             150   
                 Steel             50   
        Wages                     225   28%
                 Basic Pay        175   
                 Overtime          50   
        Other Production Costs     30    4%
                 Packaging         20   
                 Consumables       10   

56% 的可变成本百分比计算为可变成本除以总销售额 (455/810)。材料百分比是相似的材料总数除以总销售额 (200/810) 等等以获得工资和其他生产成本

请问我如何实现这些计算。在大多数情况下,我可以通过组标题中的这样一个公式来获得提名人:

=sum(iif (GroupFieldName.Value="Variable Costs",FieldValue.Value,nothing)

但总销售额的分母我似乎无法计算!

欢迎提出任何建议,请记住,我想“面向未来”SSRS2015 和 SSRS 2017 的公式/代码解决方案

提前致谢

【问题讨论】:

    标签: reporting-services ssrs-2012 ssrs-2008-r2 ssrs-2014 ssrs-2017


    【解决方案1】:

    由于分组,您的表达式无法正常工作。分组将您的 FieldValues 分开,因此您的 SUM 仅获得组的总数。

    表达式应使用组字段的 SUM 除以数据集中的所有值。

    =SUM(Fields!FieldValue.Value) / SUM(Fields!FieldValue.Value, "Dataset1")
    

    由于 SSRS 检查除以零错误,您可能需要检查这种可能性。

    =IIF(SUM(Fields!FieldValue.Value, "Dataset1") = 0, 0, SUM(Fields!FieldValue.Value) )
    / 
     IIF(SUM(Fields!FieldValue.Value, "Dataset1") = 0, 1, SUM(Fields!FieldValue.Value, "Dataset1")
    

    对于 IIF,如果 SUM 为 0,则计算结果为 0/1,即 0,避免除以零错误。

    【讨论】:

    • 如果我错了,请纠正我。但 SSRS 不会评估 IIF 的两边,无论如何它都会给你一个除以零的错误。不管 IIF 是什么?
    • 在 2008R2 中确实存在这个问题。较新的版本不再这样做了。我认为您可以改用If,它没有记录,但适用于大多数版本。或者改用Switch
    • 在汉诺威的回答中,这无论如何都不是问题,因为除数本身被计算为永远不会产生零。
    • 谢谢。该解决方案效果很好。作为这个问题的扩展,请问如何在矩阵中获得一列?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多