Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chuyển đổi truy vấn Oracle CONNECT BY sang truy vấn SQL Server

SQL Server không có CONNECT BY . Bạn cần sử dụng CTE đệ quy.

Đặt START WITH trong WHERE bộ lọc của phần neo (phần đầu tiên của CTE).

Trong phần đệ quy (nửa sau), hãy tham gia lại CTE thành EMP với CONNECT BY điều kiện.

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. Người dùng lược đồ Oracle không thể tạo bảng trong thủ tục

  2. Cách tạo câu lệnh CHÈN từ một truy vấn khi sử dụng SQLcl (Oracle)

  3. Truy vấn để có được bản ghi gần đây nhất và (trong trường hợp quan hệ) với giá trị hoặc tỷ lệ phần trăm cao hơn theo thẻ và dịch vụ

  4. Tạo một bảng / chế độ xem phẳng của một tập hợp dữ liệu được xác định theo thứ bậc

  5. Oracle:LIKE nơi bất kỳ phần nào của một chuỗi khớp với bất kỳ phần nào của chuỗi khác