Apakah sesuatu seperti ini akan berhasil? Saya memiliki kasus yang mirip dengan kasus Anda, dan saya hanya menghapus gabungan dari kueri hierarkis dan menerapkannya hanya setelahnya untuk menghindari kehilangan baris.
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