1
我有一個名爲Department
的表,其中有3列:DepartmentID
,DepartmentName
,ParentID
。ORDER BY使用MS SQL Server存儲過程的子父級層次結構
的細節
我要訂購由PARENTID和代結果見SQL Fiddle。像這樣:
╔═════════════════════════════════════════════════════ ════════
║ChildID║DepartmentName║Generation║ParentID║
╠═══════════════════════╠══════════ ══════════╬══════════╣
║1║經理║0║NULL║
║6║銷售║1║1║
║7║艦隊║1║1║
║4║貨物║2║7║
║5║運輸║2║7║
║2║IT║2║6║
║3║食品║2║6║
╚═════════╩═════ ═════════════════════
我嘗試了不同的ORDER BY
s但沒有工作。
我的存儲過程:
WITH Hierarchy(ChildId, DeparmentName, Generation, ParentID)
AS
(
SELECT DepartmentID, DeparmentName, 0, ParentID
FROM Departments AS FirtGeneration
WHERE ParentID IS NULL
UNION ALL
SELECT NextGeneration.DepartmentID, NextGeneration.DeparmentName, Parent.Generation + 1, Parent.ChildId
FROM Departments AS NextGeneration
INNER JOIN Hierarchy AS Parent ON NextGeneration.ParentID = Parent.ChildId
)
SELECT * FROM Hierarchy
OPTION(MAXRECURSION 32767)
我使用MS SQL Server 2005的
代碼不跑。有一些SQL語法錯誤。 – milo2011