CTE существует только в запросе, который его определяет.Ваш второй запрос не знает, что CTE из первого запроса когда-либо существовал.
Вы можете ссылаться на один CTE из другого, если они оба являются частью одного и того же запроса (и определены справа).порядок), так что вы можете сделать что-то вроде:
with CTE1 as (select t1.col1 from t1),
CTE2 as (select t2.col2 from CTE1 join t2 on t2.col2=CTE1.col1)
select * from CTE2;
Два определения CTE разделены запятой (как в документах ), и порядок имеет значение.В этом довольно надуманном примере вы можете ссылаться на CTE1 из CTE2;но вы не можете ссылаться на CTE2 из CTE1, поскольку он еще не был определен в том, что касается анализатора.
Основной запрос может ссылаться на один или оба CTE, даже если один уже ссылается на другой.И вы можете соединить более двух CTE вместе.