इसे आजमाएं:
;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
के साथ - माता-पिता नोड्स द्वारा क्रमबद्ध पंक्तियाँ
यदि आप चाइल्डनोड्स को ItemType
. द्वारा क्रमबद्ध करना चाहते हैं प्रत्येक स्तर के लिए, आप Level
. के साथ खेल सकते हैं और SUBSTRING
Path
. का कॉलम....
यहां डेटा के नमूने के साथ SQLFiddle