SQL Server 2005+ Oracle के CONNECT BY
. के समतुल्य है पदानुक्रमित क्वेरी सिंटैक्स एक पुनरावर्ती CTE का उपयोग करना है। एसक्यूएल सर्वर 2008 ने पदानुक्रम आईडी जोड़ा। यहाँ एक पुनरावर्ती 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
गुगलिंग "पदानुक्रमित सीटीई" और/या "पुनरावर्ती सीटीई" कई परिणाम बदल देगा। मैंने 4GuysFromRolla.com से उदाहरण क्वेरी ली।
पुनरावर्ती CTE अब ANSI मानक हैं - जैसा कि मैं समझता हूँ, Oracle 11g तक सिंटैक्स समर्थित नहीं था।