这种汇总查询怎么来实现?
表张表:    
       学校               学号      捐款性质                     金额                  捐款性质                     金额          
 市北一中         005            义务                              200.00               慈善                           300.00 
 市北二中         012            义务                              200.00               义务                           200.00 
 市北二中         018            义务                              500.00               慈善                        800.00 
 市北一中         068            慈善                              500.00                                                                  0 
 市北一中         218            慈善                              50.00                                                                     0 
 我查询到象下面的效果: 
       学校            人数               义务捐款金额         慈善捐款金额               汇总金额 
 市北一中         3                                 200.00                              850.00                     1050.00 
 市北二中         2                                 900.00                              800.00                     1700.00
------解决方案--------------------select A1.学校,A1.人数,A2.义务捐款金额,A2.慈善捐款金额,A2.汇总金额 
  from  
       ( 
         select 学校, 
                count(1) as 人数 
         From 表 
         group by 学校 
        ) A1, 
        ( 
         select T.学校, 
                sum(case when 捐款性质1= '义务 ' then 金额1 else 0 end) as 义务捐款金额, 
                sum(case when 捐款性质1= '慈善 ' then 金额1 else 0 end) as 慈善捐款金额, 
                sum(金额1) as 汇总金额 
          From 
               ( 
                  select 学校,捐款性质1,金额1 
                   From 表 
                  where 捐款性质1  <>  ' ' and  金额1 <> 0 
                  Union All 
                   select 学校,捐款性质2,金额2 
                   From 表 
                  where 捐款性质2  <>  ' ' and  金额2 <> 0 
               ) T 
         group by T.学校 
         )A2 
 where A1.学校=A2.学校
------解决方案--------------------select 学校,count(1),  
 sum(case when 捐款性质1= '义务 ' then 金额1 else 0 end)+sum(case when 捐款性质1= '义务 ' then 金额1 else 0 end), 
 sum(case when 捐款性质1= '慈善 ' then 金额1 else 0 end)+sum(case when 捐款性质1= '慈善 ' then 金额2 else 0 end), 
 sum(金额1+金额2) 
 from 表 group by 学校