create table user_vouch
(
   userid int,
   vouchid int
)
insert user_vouch select 1 ,NUll
insert user_vouch select 2 ,1
insert user_vouch select 3 ,2
insert user_vouch select 4 ,3create Function find_id(@id int)
returns int
as 
begin
   declare @EndID int
   declare @T table(userid int,vouchid int,lev int)
   declare @lev int
   set @lev=1
   insert @T select userid,vouchid ,@lev from user_vouch where userid=@id
   while @@rowcount>0
   begin
      set @lev=@lev+1
      insert @T select userid,vouchid ,@lev from user_vouch where userid in(select vouchid from @T where lev=@lev-1)
   end
   select top 1 @EndID=userid from @T order by lev desc
   return @EndID
endselect dbo.find_id(4)