Я делаю это все время:
WITH stuff1 AS (
SELECT name
,startdate
,id
FROM employees
WHERE startdate > 0
)
,stuff2 AS (
SELECT name
,startdate
,id
FROM stuff1
)
SELECT *
FROM stuff2
WHERE id > 10
Насколько я могу судить, я не достиг предела в CTE.
Единственное, что вы не можете сделать (что было бы весьма полезно), это повторно использовать CTE в отдельных SELECT
s:
WITH stuff1 AS (
SELECT name
,startdate
,id
FROM employees
WHERE startdate > 0
)
,stuff2 AS (
SELECT name
,startdate
,id
FROM stuff1
)
SELECT *
FROM stuff2
WHERE id > 10
;
SELECT *
FROM stuff2
WHERE id < 10
Say. Вместо этого вам нужно снова скопировать и вставить всю цепочку CTE.