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

ORACLE Connect по клауза еквивалент в SQL Server

SQL Server 2005+ еквивалент на CONNECT BY на Oracle йерархичният синтаксис на заявката е да се използва рекурсивен CTE. SQL Server 2008 добави HierarchyID. Ето пример за рекурсивен 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 

Търсенето в Google „йерархичен CTE“ и/или „рекурсивен CTE“ ще доведе до множество резултати. Взех примерната заявка от 4GuysFromRolla.com.

Рекурсивните CTE вече са стандарт ANSI – синтаксисът не се поддържаше до Oracle 11g, както разбирам.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете PDF отчет с помощта на PL/SQL

  2. Промяна на паролата с Oracle SQL Developer

  3. Oracle Ace Промени

  4. JDBC ResultSet:Имам нужда от getDateTime, но има само getDate и getTimeStamp

  5. Oracle (ORA-02270) :няма съвпадащ уникален или първичен ключ за тази грешка в списъка с колони