Department
という名前のテーブルがあり、3列:DepartmentID
、DepartmentName
、ParentID
というテーブルがあります。ORDER BY MS SQL Serverストアドプロシージャを使用した子 - 親階層
は私がのParentIDや世代によって結果を注文したいの詳細
ためSQL Fiddleを参照してください。このように:
╔== == == ==╦== == == == == == == ==== == == == == === ==== = ══════╗
║║たchildID DepartmentName║║世代のParentID║
╠═════════╬════════════════╬══ ║║0 NULL║
║║6営業║║1 1║
║║7艦隊══════════╬══════════╣
║║1マネージャー║1║1║
║4║貨物║2║7║
║5║交通║2║7║
║2║IT║2║6║
║3║フード║2║6║
╚═════════╩═════ == == == == == ==== == == == ===
私は違うと試しましたが、どれもうまくいきませんでした。
私のストアドプロシージャ:
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