Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Konwertuj zapytanie Oracle CONNECT BY na zapytanie SQL Server

SQL Server nie ma funkcji CONNECT BY . Musisz użyć rekurencyjnego CTE.

Umieść START WITH w WHERE filtr części kotwicy (pierwsza część CTE).

W części rekurencyjnej (druga połowa) ponownie dołącz do CTE do EMP z CONNECT BY stan.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie widoku bez klucza podstawowego z Entity

  2. PL/SQL (Jak obliczyć pierwszy i ostatni dzień dowolnego kwartału dowolnego roku)

  3. Zapytanie krzyżowe Oracle SQL

  4. gdzie są pliki klas DMS Oracle?

  5. Jak usunąć zduplikowane kolumny z połączenia w SQL?