Oracle
 sql >> база данни >  >> RDS >> Oracle

Преобразувайте заявка на Oracle CONNECT BY в заявка на SQL Server

SQL Server няма CONNECT BY . Трябва да използвате рекурсивен CTE.

Поставете START WITH в WHERE филтър на анкерната част (първата част на CTE).

В рекурсивната част (втората половина) присъединете отново CTE към EMP с CONNECT BY състояние.

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. Oracle:Как да създадете елемент в конкретно пространство от имена с XMLElement()

  2. Когато изпълнява скрипт на SQLPlus, той отпечатва поредица от числа вместо изход

  3. .net entity framework с oracle 11g

  4. Проверете дължината на колоната в XMLTable

  5. Използване на Oracle:Мога ли да използвам „динамично“ създадена променлива в клаузата за завъртане?