sql >> Databáze >  >> RDS >> Oracle

ORACLE Connect by klauzule ekvivalentní v SQL Server

SQL Server 2005+ ekvivalent Oracle CONNECT BY hierarchická syntaxe dotazu je použití rekurzivního CTE. SQL Server 2008 přidal HierarchyID. Zde je příklad rekurzivního 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 „hierarchické CTE“ a/nebo „rekurzivní CTE“ zobrazí četné výsledky. Vzal jsem příklad dotazu z 4GuysFromRolla.com.

Rekurzivní CTE jsou nyní standardem ANSI – jak jsem pochopil, syntaxe nebyla podporována až do Oracle 11g.



  1. Jak převést malá písmena na velká v MySQL

  2. Volání uložené procedury s parametrem v c#

  3. Úplné odstranění MySQL 5.7

  4. 8 způsobů, jak přidat hodinu k datu a času v MariaDB