Вот отдельный пример.
Declare @Temp table
(
ID int,
ParentID int,
Happened date,
Value int
)
Insert into @Temp Values
(1, null, dateadd(day,1,GetDate()),1),
(2, 1, dateadd(day,2,GetDate()),2),
(3, 1, dateadd(day,3,GetDate()),3),
(4, null, dateadd(day,4,GetDate()),10),
(5, 3, dateadd(day,5,GetDate()),50),
(6, 4, dateadd(day,5,GetDate()),50),
(7, 5, dateadd(day,5,GetDate()),90);
----------------------------------------
with Magic as
(
select *
from @Temp
Where ID = 1
union all
select t.*
from
Magic m
inner join
@Temp t
on t.ParentID = m.ID
)
select * from Magic
option (maxrecursion 3)