Да, вы можете ссылаться на ранее объявленные CTE в последующих CTE:
WITH cte1 as (
SELECT t.*
FROM cdr.Location t),
cte2 as (
SELECT t.*
FROM cdr.Location t
JOIN cte1 c1 ON c1.somefield = t.someField)
SELECT *
FROM cte1
UNION
SELECT *
FROM cte2
ПРИМЕЧАНИЯ
- Присоединение к cte2 в объявлении cte1 не будет работать, потому что оператор выполняется сверху вниз.
- Вы ссылаетесь на CTE, как на любое другое встроенное представление (каким оно является) или на таблицу / временную таблицу / и т. Д., Присоединяясь к тому, что вам нужно.
Кстати: попробуйте сформулировать лучший пример в будущем - это полезно для вас и остальных членов SO-сообщества, которые пытаются вам помочь.