Нормальное использование предложения WITH раскрывается по его альтернативному имени, факторингу подзапроса.Они удобны, когда вы хотите использовать подзапрос более одного раза в нашем запросе, скажем, в двух whatever IN ( sub-query )
фильтрах.
Это не относится к вашему случаю, так что вы можете просто преобразовать CTE во встроенное представление:
SELECT
name,
SUM(order) as TOTAL,
SUM(num) as NUM,
QUANT
from (
SELECT
a.name,
w.order as order,
s.num as num,
w.id,
(Select count(*)
from quant
where id = w.id and trunc(date) between :P99_DATE_FROM and :P99_DATE_TO) as QUANT
FROM
web w
left outer JOIN tabel_1 a ON a.id = w.id
left outer JOIN tabel_2 s ON s.id = w.id
WHERE
(trunc(s.date) between :P99_DATE_FROM and :P99_DATE_TO
or :P99_DATE_FROM is null or :P99_DATE_TO is null)
) cte
group by name,QUANT