sql >> Base de Datos >  >> RDS >> Oracle

Convierta la consulta Oracle CONNECT BY en una consulta de SQL Server

SQL Server no tiene CONNECT BY . Necesitas usar un CTE recursivo.

Coloque el START WITH en el WHERE filtro de la parte ancla (la primera parte del CTE).

En la parte recursiva (la segunda mitad), vuelve a unir el CTE a EMP con CONNECT BY condición.

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;