【问题标题】:SSRS - Calculation of rows using column totalSSRS - 使用列总计计算行
【发布时间】:2016-04-01 05:10:34
【问题描述】:

我正在使用矩阵 Tablix 样式来显示基于日期范围参数的日期范围。下图显示了 CAT1 到 CAT20 以及案例总数。我需要有关如何根据总病例数计算病例百分比的帮助。

例如:病例总数 = 3,393,CAT1 = 11,CAT1 的病例百分比 = 0.324% (11 / 3,393)。我很难找到一种方法来使用整体案例计数来计算案例百分比。

我用 SQL 编写了一个代码,但是当我将它添加到 SSRS 数据集中时,它会超时。提前致谢。

这是 4 天的数据(注意:这是实际报告)。我有 2 个数据集 1) RSNCD_SUB 按日期,按类别计数(原因代码)。 2) RSNCD_TTL 是按日期计算的,按数据计算案例,我使用的是 tablix 矩阵。

以下是使用多个日期与单个日期运行报告时的比较。如您所见,运行 1 天的计算是正确的,但运行多天的计算是不正确的。

【问题讨论】:

    标签: ssrs-2008-r2


    【解决方案1】:

    确保您的第二个数据列与第一个数据列位于同一列组中。然后使用以下表达式,其中"DAY" 是您的列组:

    =Sum(Fields!CASE_COUNT.Value) / Sum(Fields!CASE_COUNT.Value, "DAY")
    

    第一个Sum 没有指定范围,因此只包含相关类别和日期的值。第二个Sum 将包含当天的所有值,无论类别分组如何。

    请记住使用此表达式在单元格上设置格式以将其显示为百分比,例如0.000%

    编辑:

    通过使用"DAY" 作为范围,每天的百分比是独立的。相反,如果您想要相对于整个矩阵的百分比值,请使用矩阵名称,例如"Tablix1" 而不是 "DAY"

    如果某些类别在某些日子没有值,您可以使用IIF 将单元格留空而不是显示 0%:

    =IIF(Sum(Fields!CASE_COUNT.Value) > 0, 
      Sum(Fields!CASE_COUNT.Value) / Sum(Fields!CASE_COUNT.Value, "Tablix3"),
      nothing)
    

    【讨论】:

    • 谢谢皮特。当它是一个单一的日期时,它可以工作。类别列数据可以有更多类别(3/21 上的 21 类,3/23 上的 22 类等)。如果它是 3/20 的单个日期,假设 Cat1 有 34,3/20 的总计是 169=20.12,但是当从 3/24 到 3/26 运行报告时,计算不正确。
    • @Arsee 因此,当您使用多个日期时,您希望百分比适用于所有日期的所有计数?如果是这样,我添加到答案中的新表达式应该可以解决问题。
    • 谢谢。所以“DAY”是数据集名称,“Tablix1”是属性名称对吗?
    • @Arsee 选择矩阵时,行组和列组应出现在屏幕底部。 "DAY" 是一个列组。 "Tablix1" 是其属性中矩阵的Name。为此,您的数据集名称应该无关紧要。
    • 列组显示日期,行组显示类别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多