Điều này sẽ nhận được báo cáo đầy đủ
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
Truy vấn đầu tiên lấy tổng luân phiên bằng cách hack cấu trúc của tên Bộ cho các oens mà không có số tiền, truy vấn thứ hai lấy các lá.
Truy vấn đầu tiên không thể hiển thị các lá, vì chúng sẽ được nhóm lại. t tìm thấy bất kỳ kết hợp cột nào để có cùng một thứ tự, các lá dường như không có thứ tự.
SQLFiddle bản demo
Tôi đã cố gắng viết một CTE
đệ quy , nhưng không thể có hàm tổng hợp, chẳng hạn như SUM
trong đó.