create               table               Expense(Owner               varchar(256),Amount               decimal(9))       
insert               into               Expense               select               'SD1','10'       
insert               into               Expense               select               'SD2','10'       
insert               into               Expense               select               'SD17','10'       
insert               into               Expense               select               'SD18','5'       
insert               into               Expense               select               'SD11','10'       
insert               into               Expense               select               'CY000002','1'       
insert               into               Expense               select               'SD2','10'       
create               table               viewOwner(Name       varchar(256),Id               varchar(256),FatherId               varchar(256))       
insert               into               viewOwner               select               'bjglb','SD11','C'       
insert               into               viewOwner               select               'jls','SD1','C'       insert               into               viewOwner               select               'zhb','SD2','C'       insert               into               viewOwner               select               'zhbgs','SD17','SD2'       
insert               into               viewOwner               select               'st','SD18','SD2'       
insert               into               viewOwner               select               'wcglb','SD10','C'       
insert               into               viewOwner               select               'wcglblp','CY000002','SD10'   
go
--建一个函数
Create function fn_部门(
@id varchar(256)
)
returns varchar(256)
as
begin
   declare @r varchar(256)
   declare @fid varchar(256)
   declare @Name varchar(256)
   set @r=@id
   select @Name=Name,@fid=FatherId from viewOwner where id=@id
   while @fid <>'C'
   begin
      set @r=@fid
      select @Name=Name,@fid=FatherId from viewOwner where id=@r
   end
   return @Name
end
go--查询
select dbo.fn_部门(Owner) as 部门,
  sum(Amount) as 用款总额
from Expense
group by dbo.fn_部门(Owner)--结果
部门                                                                                                                                                                                                                                                               用款总额                                     
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------- 
bjglb                                                                                                                                                                                                                                                            10
jls                                                                                                                                                                                                                                                              10
wcglb                                                                                                                                                                                                                                                            1
zhb                                                                                                                                                                                                                                                              35(所影响的行数为 4 行)