求一个比较难的sql语句
表   aa 
 mid   stype   syear         stable         imark      sprovice 
 1         理科         2006      本科一批         503            辽宁 
 2         理科         2006      本科二批         403            辽宁 
 怎么才能得到如下结果:   
                      本科一批               本科二批 
 2002         503                                 403     
 特别求助 
------解决方案--------------------drop table aa 
 go 
 create table aa(mid int,stype varchar(10),syear char(4),stable varchar(20),imark int,sprovice varchar(10)) 
 insert into aa 
 select 1, ' 理科 ', '2006 ', '本科一批 ',503, '辽宁 ' 
 union all select 2, '理科 ', '2006 ', '本科二批 ',403, '辽宁 ' 
 declare @sql varchar(1000) 
 set @sql= ' ' 
 select @sql=@sql+ ',max(case when stable= ' ' '+stable+ ' ' ' then imark else 0 end) as  ' ' '+stable+ ' ' ' ' 
 from (select distinct stable from aa)t 
 exec( 'select syear '+@sql+ ' from aa group by syear ') 
 /* 
 syear 本科二批        本科一批         
 ----- ----------- -----------  
 2006  403         503 
 */