【发布时间】: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