Dit krijgt het volledige rapport
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
De eerste query krijgt de rollende som door de structuur van de afdelingsnaam voor de oens te hacken zonder de bedragen, de tweede krijgt de bladeren.
De eerste vraag kan de bladeren niet tonen, omdat ze gegroepeerd worden. t vond een kolomcombinatie om dezelfde volgorde te krijgen, de bladeren lijken ongeordend te zijn.
SQLFiddle demo
Ik heb geprobeerd een recursieve CTE
te schrijven , maar het is niet mogelijk om een aggregatiefunctie te hebben, zoals SUM
erin.