Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Converter consulta Oracle CONNECT BY em consulta SQL Server


SQL Server não tem CONNECT BY . Você precisa usar um CTE recursivo.

Coloque o START WITH no WHERE filtro da parte âncora (a primeira parte do CTE).

Na parte recursiva (a segunda metade), junte o CTE ao EMP com o CONNECT BY doença.
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;