【问题标题】:SSRS 2008 SUM using scope and recursive option to rollup valuesSSRS 2008 SUM 使用范围和递归选项来汇总值
【发布时间】:2016-10-19 13:17:41
【问题描述】:

考虑这些数据(目前为 6 行 1 列)

;with cols as
(
 SELECT 1 colID, 'C1' col
 --UNION SELECT 2, 'C2' 
)
, rows as
(
 SELECT 1 RowID, 'R1' row, null ParentID
 UNION SELECT 2, 'R2', 1
 UNION SELECT 3, 'R3', 2 
 UNION SELECT 4, 'R4', 2 
 UNION SELECT 5, 'R5', 1 
 UNION SELECT 6, 'R6', 1 
)
,data
AS
(
 SELECT 3 RowID, 1 as Amount
 UNION SELECT 4 RowID, 2 as Amount
)
SELECT r.RowID, r.row, c.colID, c.col, d.Amount, r.ParentID
FROM rows r 
CROSS JOIN cols c
LEFT JOIN data d on d.RowID = r.RowID

我使用以下布局将其应用于矩阵控件并获得如图所示的输出。请注意金额如何不汇总到父行。现在可以了。

现在,为了获取要汇总的值,我可以使用表达式(由 msdn、博客等详细记录)

=Sum(Fields!Amount.Value, "RowGroup", recursive)

现在这正是我想要的,将值滚动到它们的父行:

但是,我的数据集具有动态列和行,但是当引入第二(或第三、第四等)列时,递归总和不会像我预期的那样工作。它不是停留在当前列的范围内,而是对所有列求和,然后将这些值向上滚动到父行。如图:

我希望这些值仅在给定行和列的当前范围内汇总。

任何指导都将不胜感激,因为这让我很困惑。

谢谢

【问题讨论】:

    标签: sql-server recursion reporting-services ssrs-2008


    【解决方案1】:

    这实际上是不可能的,因为需要同时查看行组范围和列组范围。

    我花了很长时间寻找答案.. 对于其他正在寻找的人。以下是其他论坛的一些更好的解释:

    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/55c55aad-4755-4da5-afce-94d16c9e201d/cannot-perform-a-correct-recursive-sum-in-a-tablix?forum=sqlreportingservices

    不幸的是,到目前为止(2008 年和 2005 年)不支持您描述的场景,因为它无法在矩阵的两个范围内进行递归求和。如果将表达式替换为 SUM(Fields!Amount.Value, "NAME", Recursive),您将获得递归总计,但总计将忽略月份索引组。实际上,您希望对组 NAME 和 MonthIndex 进行递归求和,但是您不能编写这样的表达式:SUM(Fields!Amount.Value, "NAME" and MonthIndex, Recursive)。对?所以一般来说,在一个矩阵中,当你写成这样的表达式时: SUM(Fields!Amount.Value) 它将在两个groupsNAME和MonthIndex的范围内求和,如果你想指定范围,你只需要指定一个范围。而且很遗憾,递归求和需要指定作用域,而你描述的场景需要指定两个作用域

    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/9d7f36bc-73d6-4f19-a306-0b84321e6feb/calculating-the-sum-on-a-hierarchy-with-multiple-grouping-columns?forum=sqlreportingservices

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多