您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在SQL中以树状结构汇总从子级到父级的数据?

如何在SQL中以树状结构汇总从子级到父级的数据?

这将获得完整的报告

SELECT t1.DEPARTMENT_ID
     , t1.PARENT_DEP_ID
     , t1.DEPARTMENT   
     , Sum(t2.Amount) Amount
FROM   TREE_DATA t1
       INNER JOIN TREE_DATA t2 
       ON t1.DEPARTMENT = SUBSTR(t2.DEPARTMENT, 1, LENGTH(t1.DEPARTMENT))
WHERE  t1.Amount = 0
GROUP BY t1.DEPARTMENT_ID, t1.PARENT_DEP_ID, t1.DEPARTMENT

UNION ALL

SELECT DEPARTMENT_ID
     , PARENT_DEP_ID
     , DEPARTMENT   
     , Amount
FROM   TREE_DATA
WHERE  Amount > 0
ORDER BY DEPARTMENT

一个查询通过修改不包含金额的分部的部门名称结构来获得滚动总和,第二个查询获得叶子。 第一个查询无法显示叶子,因为它们将被分组。我还没有找到任何列组合来获得相同的顺序,叶子似乎是无序的。

SQLFiddle演示

我尝试编写一个递归CTE,但是不可能有聚合函数,例如SUM在其中。

SQLServer 2022/1/1 18:29:44 有389人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶