Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Zusammenmischen Connect by, Inner Join und Sum mit Oracle

Würde so etwas funktionieren? Ich hatte ähnliche Fälle wie Sie, und ich habe einfach den Join aus der hierarchischen Abfrage entfernt und ihn erst danach angewendet, um zu vermeiden, dass Zeilen verloren gehen.

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