一个数据统计算问题,请前辈指点!!先感谢前辈哈!!
 表结构 
 表名:学生名册 
 学号                     姓名      班级 
 20050001         张三      1班 
 20050002         李四      2班   
 表名:学生缴费 
 学号                  缴费金额            学期 
 20050001      500                           2006-2007-2 
 20050001      400                           2006-2007-1 
 20050002      300                           2006-2007-2   
 表名:学生领书 
 学号                     教材名称                        单价   学期 
 20050001         软件工程                        25         2006-2007-2 
 20050001         photoshop教程         35         2006-2007-2 
 20050002         coreldraw教程         30         2006-2007-1 
 20050001         coreldraw教程         30         2006-2007-1     
 实现目标:   
 想按学期给学生结算费用,想达到下面这种格式(这是我想的格式,其它的也可以哈)?小弟万分感激!!   
 表名:学生退费 
 学号                     学期                              缴纳            支出         退费 
 20050001         2006-2007-1         400               30               370 
 20050001         2006-2007-2         500               60               440                 
------解决方案--------------------select 学号,学期,sum(isnull(缴费金额,0)) 缴费,sum(isnull(单价,0)) 支出,sum(isnull(缴费金额,0))-sum(isnull(单价,0)) 退费 from 学生缴费 a left join  学生领书 b on a.学号=b.学号 and a.学期=b.学期 group by a.学号,a.学期,b.学号,b.学期
------解决方案--------------------select a.学号,b.学期,缴纳=b.缴费金额,支出=sum(c.单价),退费=b.缴费金额-sum(c.单价) 
 from 学生名册 a 
 left join 学生缴费 b 
 on a.学号=b.学号 
 left join 学生领书 c 
 on b.学号=c.学号 and b.学期=c.学期 
 group by a.学号,b.学期,b.缴费金额
------解决方案----------------------原始数据:@学生名册 
 declare @学生名册 table(学号 int,姓名 varchar(4),班级 varchar(4)) 
 insert @学生名册 
 select 20050001, '张三 ', '1班  ' union all 
 select 20050002, '李四 ', '2班  ' 
 --原始数据:@学生缴费 
 declare @学生缴费 table(学号 int,缴费金额 int,学期 varchar(12)) 
 insert @学生缴费 
 select 20050001,500, '2006-2007-2  ' union all 
 select 20050001,400, '2006-2007-1  ' union all 
 select 20050002,300, '2006-2007-2  ' 
 --原始数据:@学生领书 
 declare @学生领书 table(学号 int,教材名称 varchar(13),单价 int,学期 varchar(12)) 
 insert @学生领书 
 select 20050001, '软件工程 ',25, '2006-2007-2  ' union all 
 select 20050001, 'photoshop教程 ',35, '2006-2007-2  ' union all 
 select 20050002, 'coreldraw教程 ',30, '2006-2007-1  ' union all 
 select 20050001, 'coreldraw教程 ',30, '2006-2007-1  '   
 select a.学号,b.学期,缴纳=b.缴费金额,支出=sum(c.单价),退费=b.缴费金额-sum(c.单价) 
 from @学生名册 a 
 left join @学生缴费 b 
 on a.学号=b.学号 
 left join @学生领书 c 
 on b.学号=c.学号 and b.学期=c.学期 
 group by a.学号,b.学期,b.缴费金额   
 /* 
 学号	学期	缴纳	支出	退费 
 20050001	2006-2007-1 	400	30	370 
 20050001	2006-2007-2 	500	60	440 
 20050002