sql >> Databasteknik >  >> RDS >> Oracle

ORACLE Connect by klausul motsvarande i SQL Server

SQL Server 2005+-motsvarigheten till Oracles CONNECT BY hierarkisk frågesyntax är att använda en rekursiv CTE. SQL Server 2008 lade till HierarchyID. Här är ett exempel på en rekursiv 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 

Att googla på "hierarkisk CTE" och/eller "rekursiv CTE" kommer att visa många resultat. Jag tog exempelfrågan från 4GuysFromRolla.com.

Rekursiva CTE:er är nu ANSI-standard - syntaxen stöddes inte förrän Oracle 11g som jag förstår.



  1. Ändra startvärdet för Django AutoField

  2. Hur använder man strftime och datetime korrekt med Room library?

  3. PostgreSQL multi INSERT...RETURNERAR med flera kolumner

  4. 60 miljoner poster, välj poster från en viss månad. Hur optimerar man databasen?