【发布时间】:2017-02-11 14:46:07
【问题描述】:
我有一个名为 Department 的表,包含 3 列:DepartmentID、DepartmentName、ParentID。
详情请见SQL Fiddle
我想按 ParentID 和 Generation 对结果进行排序。像这样:
╔═════════╦════════════════╦════════════╦═════════ ═╗
║ 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 BYs,但都没有成功。
我的存储过程:
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-server stored-procedures sql-server-2005 sql-order-by