使用查询的部分结果来计算同一查询的其他行

时间:2013-10-30 19:40:57

标签: sql oracle hierarchy

我有一个层次结构,来自项目任务和子任务列表。子任务也可以有子任务。

任务prwbssequence是其序号,任务wbs_parseq与其父prwbssequence相同。

所有这些信息都在Oracle表(prtask)上。没有子任务(叶子)的任务具有pristask值= 0,而具有(父)的任务具有pristask = 1。我需要计算所有父任务的工作量百分比。这是其子任务的百分比努力的总和。

Bellow是我想要工作的问题(但不是)。子查询有sum(total_effort),这实际上是子查询的结果。我想要做的是计算父任务的total_effort然后使用此值来计算它的父工作量。关于如何做到这一点的任何想法?

SELECT task.prprojectid, task.prname, task.pristask, 
DECODE (task.pristask, 
          1, task.percent_effort,
        0, (SELECT sum(total_effort)
              FROM prtask t2,
              WHERE prprojectid = task.prprojectid and task.pristask = 0 AND wbs_parseq =                   prwbssequence
              GROUP BY wbs_parseq)
        ) total_effort
FROM prtask task
AND task.prprojectid = 5008045
ORDER BY task.prwbssequence desc

0 个答案:

没有答案