Nếu cơ sở dữ liệu là SQL 2005/2008 thì ...
Cách dễ nhất để có được điều này là sử dụng CTE (Biểu thức bảng chung) được thiết kế để đệ quy.
WITH myCTE (Item_id, Depth)
AS
(
Select Item_ID, 0 as Depth From yourTable where Item_Parent=0
Union ALL
Select yourTable.Item_ID, Depth + 1
From yourTable
inner join myCte on yourTable.item_Parent = myCte.Item_Id
)
Select Item_id, Depth from myCTE
Kết quả như sau:
Item_Id Depth
1 0
2 0
3 1
4 1
5 2
Từ đó bạn có thể định dạng nó theo ý muốn.