Có công việc nào như vầy không? Tôi đã gặp các trường hợp tương tự như trường hợp của bạn và tôi chỉ đơn giản là xóa liên kết khỏi truy vấn phân cấp và chỉ áp dụng nó sau đó để tránh mất hàng.
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