sql >> Databáze >  >> RDS >> Oracle

Převeďte dotaz Oracle CONNECT BY na dotaz SQL Server

SQL Server nemá CONNECT BY . Musíte použít rekurzivní CTE.

Umístěte START WITH v WHERE filtr kotevní části (první část CTE).

V rekurzivní části (druhá polovina) znovu připojte CTE k EMP pomocí CONNECT BY podmínka.

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;



  1. SELECT WHERE IN s GROUP_CONCAT jako vstup

  2. MySQL:řazení podle uvnitř skupiny podle

  3. Získejte pouze názvy sloupců jako v poli mysql

  4. MariaDB JSON_ARRAY_APPEND() Vysvětleno