Oracle
 sql >> Base de données >  >> RDS >> Oracle

Convertir la requête Oracle CONNECT BY en requête SQL Server

SQL Server n'a pas CONNECT BY . Vous devez utiliser un CTE récursif.

Placez le START WITH dans le WHERE filtre de la partie ancre (la première partie du CTE).

Dans la partie récursive (la seconde moitié), rejoignez le CTE à EMP avec le CONNECT BY état.

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;