Questo otterrà il rapporto completo
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
La prima query ottiene la somma mobile hackerando la struttura del nome del Dipartimento per gli oens senza gli importi, la seconda ottiene le foglie.
La prima query non può mostrare le foglie, poiché verranno raggruppate.Ho' t trovato qualsiasi combinazione di colonne per ottenere lo stesso ordine, le foglie sembrano non ordinate.
SQLFiddle demo
Ho provato a scrivere un CTE
ricorsivo , ma non è possibile avere una funzione aggregata, come SUM
in esso.