SSRS动态运行总计

时间:2015-06-07 19:46:02

标签: reporting-services ssrs-tablix

我正在尝试在报表的矩阵中包含累计总列数。 这是我目前使用的表达方式:

=RunningValue(Ceiling((SUM(Fields!MINUTES.Value)/60)*4)/4,Sum,"RowGroup")

问题是总计似乎每天重置。

我在报告中有3个组:父级是月份日,类型,然后是子类型。 我想要它以便子类型将在这些日子里积累:

所以6月1日/假日/年度= 2 - 累计= 2 .. 6月2日/假日/年= 1 - 累积= 3

上面表达式中的

rowgroup是矩阵中的第3级子类型组。

无论我尝试什么,我都无法在这些日子里得到它,就像我上面说的那样,它似乎不会延续到第二天。

以下是示例数据集:

+------+------------+---------+----------+---------+
| User |    Date    |  Type   | Subtype  | Minutes |
+------+------------+---------+----------+---------+
|  158 | 13/02/2015 | Holiday | Annual   |      90 |
|  158 | 13/02/2015 | Meeting | Training |     300 |
|  158 | 13/02/2015 | Lunch   | Lunch    |      60 |
|  158 | 03/06/2015 | Holiday | Annual   |     120 |
|  158 | 03/06/2015 | Meeting | Meeting  |     285 |
|  158 | 04/06/2015 | Holiday | Sick     |     120 |
|  158 | 04/06/2015 | Holiday | Annual   |     200 |
+------+------------+---------+----------+---------+

我的矩阵列组是用户。 行组是日期,然后是类型,然后是子类型。

然后我在列分组之外有一个总列。

我现在尝试根据typesub-type列添加minutes累计总数。

作为示例(查看holidayannual条目):

03/06/2015 - 120 minutes
13/02/2015 - 90 minutes = 210 minutes 
04/06/2015 - 200 minutes = 410 minutes.

1 个答案:

答案 0 :(得分:1)

MSDN page for RunningValue获取,在您的表达式中添加scope会产生此效果。

  

对于每个新范围的实例,RunningValue的值重置为0。 如果指定了组,则在组表达式更改时重置运行值。如果指定了数据区域,则会为数据区域的每个新实例重置运行值。如果指定了数据集,则不会在整个数据集中重置运行值。

要解决此问题,只需删除范围:

=RunningValue(Ceiling((SUM(Fields!MINUTES.Value)/60)*4)/4,Sum)

这将在所有日期内进行总计(因为天数是您的最高级别)。如果这是不正确的,您可能会举例说明报告目前正在做什么,以及您希望它做什么?