Case 1
| Employee ID | Name | Supervisor ID |
| 001 | Paroar Habib | Null |
| 002 | Sumon Mazumder | 001 |
| 003 | Kalim Uddin | 001 |
| 004 | Jewel Ahmed | 002 |
Case 2
| vmenuid | vmenuname | vparent |
| M001 | HR System | Null |
| M002 | Payroll | M001 |
| M003 | Salary Benefits | M002 |
| M004 | Recruitment | M001 |
Aplicando la consulta:
WITH security_menu_Recursive(Parent,MenuId,MenuName,LEVEL)
AS
(
SELECT vparent,vmenuid,vmenuname,0 AS LEVEL FROM dbo.SecurityMenu WHERE vParent = null
UNION ALL
SELECT vparent,vmenuid,vmenuname,Level + 1 AS LEVEL FROM dbo.SecurityMenu
INNER JOIN security_menu_Recursive AS smr ON smr.menuid = dbo.SecurityMenu.vParent
)
SELECT parent,menuid,menuname,LEVEL FROM security_menu_Recursive
Resultado:
| Parent | MenuID | MenuName | Level |
| Null | M001 | HR System | 0 |
| M001 | M002 | Payroll | 1 |
| M001 | M004 | Recruitment | 1 |
| M002 | M003 | Salary Benefits | 2 |
Ejemplo completo en codeproject.com