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

ORACLE Connect by równoważna klauzula w SQL Server

SQL Server 2005+ odpowiednik Oracle CONNECT BY hierarchiczna składnia zapytań polega na użyciu rekurencyjnego CTE. SQL Server 2008 dodał HierarchyID. Oto przykład rekurencyjnego CTE:

WITH EmployeeHierarchy (EmployeeID, LastName, FirstName, ReportsTo, HierarchyLevel) AS (
   SELECT EmployeeID,
          LastName,
          FirstName,
          ReportsTo,
          1 as HierarchyLevel
     FROM Employees
    WHERE ReportsTo IS NULL
   UNION ALL
   -- Recursive step
   SELECT e.EmployeeID,
          e.LastName,
          e.FirstName,
          e.ReportsTo,
          eh.HierarchyLevel + 1 AS HierarchyLevel
     FROM Employees e
     JOIN EmployeeHierarchy eh ON e.ReportsTo = eh.EmployeeID)
  SELECT *
    FROM EmployeeHierarchy
ORDER BY HierarchyLevel, LastName, FirstName 

Wyszukiwanie „hierarchicznego CTE” i/lub „rekursywnego CTE” przyniesie wiele wyników. Wziąłem przykładowe zapytanie z 4GuysFromRolla.com.

Rekursywne CTE są teraz standardem ANSI - składnia nie była obsługiwana do Oracle 11g, jak rozumiem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak programowo wygenerować DDL z bazy danych Oracle?

  2. Nowe funkcje bazy danych Oracle 20c

  3. Dwie instrukcje PLSQL z początkiem i końcem działają dobrze osobno, ale nie razem?

  4. Zautomatyzuj zadania integracji danych IRI za pomocą Oracle Job Scheduler

  5. Jak wykonać kopię zapasową maszyn wirtualnych RAC