Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Konvertieren Sie die Oracle CONNECT BY-Abfrage in eine SQL Server-Abfrage

SQL Server verfügt nicht über CONNECT BY . Sie müssen einen rekursiven CTE verwenden.

Platzieren Sie START WITH im WHERE Filter des Ankerteils (der erste Teil des CTE).

Verbinden Sie im rekursiven Teil (der zweiten Hälfte) den CTE wieder mit EMP mit dem CONNECT BY Zustand.

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;