Я переношу запрос с Oracle на SQL Сервер. В моем запросе используется CTE, а внутри этого CTE есть несколько рекурсивных запросов с использованием CONNECT BY PRIOR, который SQL Server не имеет аналогичной функции. Ниже показано, как выглядит мой запрос ORACLE:
WITH CTE1 --Oracle CTE here
(
SELECT FROM --derived table here
(
SELECT FROM TABLE CONNECT BY PRIOR --Oracle recursive function here
UNION
SELECT FROM TABLE --tables are joins to the recursive function above
)
CONNECT BY PRIOR --Oracle recursive function here
)
SELECT FROM CTE1 --query CTE table above
Я создал рекурсивные запросы CTE, как показано ниже, но SQL Server CTE не позволяет мне создавать «множественные» или «вложенные» "рекурсивные запросы, чтобы я мог использовать их только в одном запросе. Поэтому я хотел бы спросить, возможно ли это, если мы также создадим рекурсивные запросы с помощью Temp Table? Большое спасибо.
WITH cte1 ( "PARENT ID", "PARENT NAME", "CHILD ID", "CHILD NAME" ) AS
(
SELECT t1."PARENT ID", t1."PARENT NAME", t1."CHILD ID", t1."CHILD NAME", cteInner."LEVEL" + 1
FROM TABLE1 t1
INNER JOIN ct1 cteInner
ON t1."PARENT ID" = cteInner."CHILD ID"
)
SELECT * FROM cte1;