use recursive ctes;With CTEAS(SELECT ID,NAME,SUB_ID, CAST(1 AS int) AS LevelFROM table tLEFT JOIN table t1On t1.ID = t.SUB_IDWHERE t1.ID IS NULLUNION ALLSELECT t.Id,t.NAME,t.SUB_ID,c.Level+1FROM CTE cJOIN table tON t.SUB_ID = c.ID)SELECT ID,NAME,LevelFROM CTEOPTION (MAXRECURSION 0)
------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/