MS SQL 遞迴查詢 CTE Query

MS SQL 遞迴查詢 CTE Query

利用CTE實作Recursive查詢,先Select出頂點的資料作為第一筆,再UNION關連後的資料,需注意UNION中須JOIN回CTE中的關連條件。

WITH tblCTE AS
(
    --TOP NODE
    SELECT 1 AS DeptLevel, *
    FROM DepartmentUnit
    WHERE id = '{0}'
    --TREE NODE, u1.superUnitGUID = tblCTE.GUID為部門間的關連條件
    UNION ALL	
    SELECT (DeptLevel + 1) AS DeptLevel, u1.*
    FROM DepartmentUnit u1 JOIN tblCTE ON u1.superUnitGUID = tblCTE.GUID
)
SELECT * FROM tblCTE ORDER BY DeptLevel ASC
應用項目
  • 查詢某部門是否存在於階層結構中
  • 查詢最近一筆有無存在某目的資料
  • ...想到再補充...