Dadurch wird der vollständige Bericht abgerufen
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
Die erste Abfrage erhält die fortlaufende Summe durch Hacken der Struktur des Abteilungsnamens für die Oens ohne die Beträge, die zweite erhält die Blätter.
Die erste Abfrage kann die Blätter nicht anzeigen, da sie gruppiert werden. Ich habe' Ich habe keine Spaltenkombination gefunden, um dieselbe Reihenfolge zu erhalten, die Blätter scheinen ungeordnet zu sein.
SQLFiddle Demo
Ich habe versucht, einen rekursiven CTE
zu schreiben , aber es ist keine Aggregatfunktion wie SUM
möglich darin.