Use a cláusula SQL WITH como um filtro

aqui estou tentando calcular o custo total de um PROJETO. Isso deve ser feito localizando todos os registros na tabela JOB que correspondem a um projeto específico. Tenho que entrar por meio de uma tabela chamada ESPECIFICAÇÃO. Em seguida, preciso usar esses registros para localizar todos os registros MATERIALREQUEST e SCHEDULE desse projeto relacionados a esse trabalho. Convencionalmente, isso exigiria a mesma subconsulta para associar PROJECT com JOB para ambas as subconsultas em MATERIALREQUEST e SCHEDULE, mas usar a cláusula with me permite escrever isso uma vez como uma espécie de tabela temporária, JOBS, e usá-la duas vezes em meu código.

Observe que isso está no Oracle.

with JOBS as (
select p.PID, j.*
from "PROJECT" p
join "SPECIFICATION" s on p.PID = s.PID
join "JOB" j on s.SPECID = j.SPECID
where p.STATUS = 1
)
select p.PID as "PROJECT NUMBER", (et.TOTAL + mt.TOTAL) as "TOTAL COST"
from "PROJECT" p
join (
select sum(e.HOURLYRATE * j.ACTDURATION) as TOTAL, j.PID
from JOBS j
join SCHEDULE s on j.JOBID = s.JOBID
join EMPLOYEE e on s.EMPID = e.EMPID
group by j.PID
) et on p.PID = et.PID
join (
select sum(m."COST" * r.QTY) as TOTAL, j.PID
from JOBS j
join MATERIALREQUEST r on j.JOBID = r.JOBID
join MATERIAL m on r.MATID = m.MATID
where r.AUTH = 1
group by j.PID
) mt on p.PID = mt.PID
where p.STATUS = 2 and p.pid=2452;