Here is All you want, with dummy data,
CREATE TABLE #Test
(
IDINT,
ParentIDINT,
TNameVARCHAR(25)
)
INSERT INTO #Test
(
ID,
ParentID,
TName
)
SELECT 1,NULL,'Granfather'
UNION ALL
SELECT 2,1,'father1'
UNION ALL
SELECT 3,1,'father2'
UNION ALL
SELECT 4,2,'1st-son-father1'
UNION ALL
SELECT 5,2,'2nd-son-father1'
UNION ALL
SELECT 6,3,'1st-son-father2'
UNION ALL
SELECT 7,3,'2nd-son-father2'
SELECT * FROM #Test
--------------------------------------------
-- Recursive CTE
;WITH Tree AS
(
SELECT Parent.ID[ID],
Parent.ParentID[ParentID],
Parent.TName
FROM #Test Parent
WHERE Parent.ID =2--@ID -- Pass the Top Id you want to see children of it.
UNION ALL
SELECT Child.ID,
Child.ParentID,
Child.TName
FROM #Test Child
INNER JOIN TreeON Child.ParentID = Tree.ID
)
SELECT *
FROM Tree
DROP TABLE #Test