क्या ऐसा कुछ काम करेगा? मेरे पास आपके जैसे मामले हैं, और मैंने केवल पदानुक्रमित क्वेरी से शामिल को हटा दिया और पंक्तियों को खोने से बचने के लिए इसे बाद में लागू किया।
SELECT TaskName, Sum(ts.hours) "TotalHours"
FROM (
SELECT replace(sys_connect_by_path(decode(level, 1, t.name), '~'), '~') As TaskName, t.id
FROM tasks t
START WITH PARENTOID=-1
CONNECT BY PRIOR t.id = t.parent_id
) tasks
INNER JOIN timesheets ts ON tasks.id=ts.task_id
GROUP BY TaskName Having Sum(ts.hours) > 0 ORDER BY TaskName