У меня есть таблица с именем Department
с 3 колонками: DepartmentID
, DepartmentName
, ParentID
.ORDER BY дочерняя иерархия с использованием хранимой процедуры MS SQL Server
См SQL Fiddle подробности
Я хочу заказать результаты по ParentID и генерации. Например:
╔═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ ═ ═ ═ ═ ║ ║ ║ ═ ═
║ ChildID ║ DepartmentName ║ Generation ║ ParentID ║
╠ = = = = = = = = = ══════════╬══════════╣
║ 1 ║ ║ Менеджер 0 ║ ║ NULL
║ ║ 6 продаж ║ 1 ║ 1 ║
║ ║ 7 Fleet ║ 1 ║ 1 ║
║ 4 ║ Груз ║ 2 ║ 7 ║
║ 5 ║ ║ Транспорт 2 ║ ║ 7
║ ║ 2 IT-║ ║ 2 6 ║ ║
3 ║ ║ еды 2 ║ ║ 6
╚═════════╩═════ = 0 =
Я пробовал разные ORDER BY
с, но никто не работал.
Моя хранимая процедура:
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