これで完全なレポートが得られます
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
最初のクエリは、金額なしでoensの部門名の構造をハッキングすることによってローリングサムを取得し、2番目のクエリはリーフを取得します。
最初のクエリは、グループ化されるため、リーフを表示できません。同じ順序になる列の組み合わせが見つかった場合、リーフは順序付けられていないようです。
SQLFiddle デモ
再帰的なCTE
を書こうとしました 、ただし、SUM
などの集計関数を使用することはできません。 その中に。