Tím získáte úplný přehled
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
První dotaz získá pohyblivý součet hacknutím struktury názvu oddělení pro oens bez částek, druhý dostane listy.
První dotaz nemůže zobrazit listy, protože budou seskupeny. Když jsem nenašel žádnou kombinaci sloupců pro získání stejného pořadí, listy se zdají být neuspořádané.
SQLFiddle demo
Pokusil jsem se napsat rekurzivní CTE
, ale není možné mít agregační funkci, jako je SUM
v něm.