我正在尝试显示一个分层(向下钻取)报告,该报告重复来自子组中父总数的详细数据。例如,销售人员层次结构,其中每个销售人员都可以产生销售额并拥有组成员:
--第 1 人:总销售额 10
---- 第 1 人:2
---- 第 2 人:3
----第 3人:总销售额 5
------ 第 3 人:2
------第 4 人:3
此示例中的第 1 个人和第 3 个人是组领导,他们所在行中显示的总销售额包括他们直接产生的销售额以及他们所在组的销售人员产生的销售额。因此,要正确显示销售额来自何处,人员 1 还必须像组成员一样显示(相同 - 下一级 - 对于人员 3)。
数据源是 SQL 查询。我尝试了几个行分组选项,并尝试将数据作为嵌套集交付或将级别放入单独的列中,但除了在复杂的 SQL 查询中预先格式化数据之外,我想不出另一种方法来完成这项工作 - 我希望他们的是一种更类似于 SSRS 的方式来实现这一点。
示例分层数据:
DECLARE @salespeople TABLE (SpID INT, ParentID INT);
DECLARE @sales TABLE (SpID INT, Amount INT);
INSERT INTO @salespeople (SpID, ParentID) VALUES
(1, NULL),
(2, 1),
(3, 1),
(4, 2);
INSERT INTO @sales (SpID, Amount) VALUES
(1, 2),
(2, 3),
(3, 2),
(4, 3);
WITH rowgroup
AS
(
SELECT ParentID, sp.SpId, s.Amount
FROM @salespeople sp
JOIN @sales s ON sp.SpID = s.SpID
WHERE ParentID IS NULL
UNION ALL
SELECT sp.ParentID, sp.SpId, s.Amount
FROM @salespeople sp
JOIN @sales s ON sp.SpID = s.SpID
JOIN rowgroup r ON r.SpID = sp.ParentID
)
SELECT * FROM rowgroup;