Рекурсивный запрос с использованием временных таблиц вместо CTE? - PullRequest
0 голосов
/ 17 июня 2020

Я переношу запрос с 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;
...