急,高手请帮忙!存储过程开发问题
刚学习SQL开发没多久,基本概念学的差不多了,现在要写个存储过程,主要要求如下: 
 有两张表用来计算收费,比如‘业务1’分三种收费各安一定比例(如表1),然后三种收费又安一定比例分配(如表2),其中‘pid’对应的就是表1中id,也就是表1中的收费1又按三种收费来分配。   如何使用存储过程来输出一个结果集(入参包括业务名和收费金额),   重要的是如果有固定收费的话要先减去固定的然后才能算其他比例的。   如要查业务1,1000的结果集,输出如表3。 
 id	业务               nname	ntype	nvalue 
 1	业务1            收费1	比例	30 
 2	业务1            收费2	比例	70 
 3	业务1            收费3	固定	10 
 表1   
 id	pid	nname	ntype	nvalue 
 1	1	费1-1	固定	5 
 2	1	费1-2	比例	50.0000 
 3	1	费1-3	比例	50.0000 
 4	2	费2	比例	100.0000 
 5	3	费3	比例	100.0000 
 表2   
 id	业务	nname1	nname1	nvalue 
 1	业务1	收费1	费1-1	5 
 2	业务1	收费1	费1-2	((1000-10)*30%-5)*50% 
 3	业务1	收费1	费1-3	((1000-10)*30%-5)*50% 
 4	业务1	收费2	费2	(1000-10)*70% 
 5	业务1	收费3	费3	10 
 表3   
 急~~~在线等,请高手提示下该怎么做?万分感谢。   
------解决方案----------------------建立环境 
 create table 表1 ( 
 id	int, 
 业务     nvarchar(20), 
 nname	nvarchar(20), 
 ntype	nvarchar(20), 
 nvalue numeric(10,2) 
 )   
 create table 表2 ( 
 id	int, 
 pid	int, 
 nname	nvarchar(20), 
 ntype	nvarchar(20), 
 nvalue numeric(10,2) 
 )     
 insert 表1 select 
 1,	N '业务1 ',    N '收费1 ',	N '比例 ',	30 
 union all select 
 2,	N '业务1 ',    N '收费2 ',	N '比例 ',	70 
 union all select 
 3,	N '业务1 ',    N '收费3 ',	N '固定 ',	10     
 insert 表2 select 
 1,	1,	N '费1-1 ',	N '固定 ',	5 
 union all select 
 2,	1,	N '费1-2 '	,N '比例 ',	50.0000 
 union all select 
 3,	1,	N '费1-3 '	,N '比例 ',	50.0000 
 union all select 
 4,	2,	N '费2 '	,N '比例 ',	100.0000 
 union all select 
 5,	3,	N '费3 '	,N '比例 ',	100.0000   
 go     
 --存储过程 
 create proc p_cal 
 @业务 nvarchar(20), 
 @收费金额 numeric(10,2) 
 as   
 --存放结果 
 declare @表3 table( 
 id	int IDENTITY(1,1), 
 pid	int , 
 业务     nvarchar(20), 
 nname1	nvarchar(20), 
 nname2	nvarchar(20), 
 nvalue numeric(10,2) 
 )   
 --存放中间数据 
 declare @t table( 
 pid	int, 
 业务     nvarchar(20), 
 nname1	nvarchar(20), 
 nvalue numeric(10,2) 
 )     
 insert @t 
 select id,业务,nname,nvalue 
 from 表1 
 where 业务=@业务 
 and ntype=N '固定 '   
 set @收费金额=@收费金额-(select sum(nvalue) from @t)   
 insert @t 
 select id,业务,nname,nvalue=@收费金额*nvalue/100 
 from 表1 
 where 业务=@业务 
 and ntype=N '比例 '     
 insert @表3(pid,业务,nname1,nname2,nvalue) 
 select a.pid,t.业务,t.nname1,a.nname,a.nvalue 
 from 表2 a,@t t 
 where a.pid=t.pid 
 and a.ntype=N '固定 '     
 insert @表3(pid,业务,nname1,nname2,nvalue) 
 select a.pid,t.业务,t.nname1,a.nname,nvalue=(t.nvalue-isnull((select sum(nvalue) from @表3 where pid=a.pid),0))*a.nvalue/100 
 from 表2 a,@t t 
 where a.pid=t.pid 
 and a.ntype=N '比例 '   
 --显示结果 
 select id,业务,nname1,nname2,nvalue from @表3 
 order by 业务,nname1,nname2,id   
 go   
 --调用测试 
 p_cal N '业务1 ',1000     
 --结果 
 id          业务                   nname1               nname2               nvalue        
 ----------- -------------------- -------------------- -------------------- ------------  
 1           业务1                  收费1                  费1-1                 5.00 
 2           业务1                  收费1                  费1-2                 146.00 
 3           业务1