3 回答

TA貢獻1765條經(jīng)驗 獲得超5個贊
嘗試這個:
;WITH items AS (
SELECT EstimateItemID, ItemType
, 0 AS Level
, CAST(EstimateItemID AS VARCHAR(255)) AS Path
FROM EstimateItem
WHERE ParentEstimateItemID IS NULL AND EstimateID = @EstimateID
UNION ALL
SELECT i.EstimateItemID, i.ItemType
, Level + 1
, CAST(Path + '.' + CAST(i.EstimateItemID AS VARCHAR(255)) AS VARCHAR(255))
FROM EstimateItem i
INNER JOIN items itms ON itms.EstimateItemID = i.ParentEstimateItemID
)
SELECT * FROM items ORDER BY Path
帶Path-行由父節(jié)點排序
如果要按ItemType每個級別對子節(jié)點進行排序,則可以使用Leveland SUBSTRINGof Pathcolumn ....
這里是SQLFiddle與數(shù)據(jù)樣本

TA貢獻1887條經(jīng)驗 獲得超5個贊
我相信您需要在CTE的結(jié)果中添加以下內(nèi)容...
BranchID =唯一標識分支的某種標識符。原諒我沒有具體說明,但我不確定是什么確定了您需要的分支。您的示例顯示了一個二叉樹,其中所有分支都流回到根。
ItemTypeID,其中(例如)0 =產(chǎn)品和1 =服務。
父母=標識父母。
如果輸出中存在這些內(nèi)容,我認為您應該能夠?qū)⒉樵兊妮敵鲇米髁硪粋€CTE或查詢中的FROM子句。按BranchID,ItemTypeID,Parent排序。
- 3 回答
- 0 關(guān)注
- 625 瀏覽
添加回答
舉報