Oracle
 sql >> Database >  >> RDS >> Oracle

Converti query Oracle CONNECT BY in query SQL Server

SQL Server non dispone di CONNECT BY . Devi usare un CTE ricorsivo.

Inserisci il START WITH nel WHERE filtro della parte di ancoraggio (la prima parte del CTE).

Nella parte ricorsiva (la seconda metà), unisci nuovamente il CTE a EMP con il CONNECT BY condizione.

WITH cte AS (
    SELECT
        LEVEL = 1,
        e.EMPNO,
        e.ENAME,
        e.JOB,
        e.MGR
    FROM EMP e
    WHERE e.MGR IS NULL

    UNION ALL

    SELECT
        cte.LEVEL + 1,
        e.EMPNO,
        e.ENAME,
        e.JOB,
        e.MGR
    FROM EMP e
    JOIN cte ON e.MGR = cte.EMPNO
)

SELECT
    cte.LEVEL,
    cte.EMPNO,
    cte.ENAME,
    cte.JOB,
    cte.MGR
FROM cte
ORDER BY cte.LEVEL;