排名的问题  求一SQL
 create   table   a 
 (sname   int, 
    smonth   int, 
    score   int)   
 insert   into   a   values   (   1,7,80) 
 insert   into   a   values   (   1,8,40) 
 insert   into   a   values   (   1,9,80) 
 insert   into   a   values   (   2,7,50) 
 insert   into   a   values   (   2,8,40) 
 insert   into   a   values   (   2,9,60) 
 insert   into   a   values   (   3,7,50) 
 insert   into   a   values   (   3,8,80) 
 insert   into   a   values   (   3,9,60) 
 select   sname,sum(score*(case   when   smonth=7   then   1   else   0   end))   [7月], 
 sum(score*(case   when   smonth=8   then   1   else   0   end))   [8月],sum(score*(case   when   smonth=9   then   1   else   0   end))   [9月], 
 sum(score)   总分,(select   count(*)+1   from   (select    'a '   a   from   a   group   by   sname   having   sum(score)>    (select   sum(score)   s   from   a   i   where   i.sname=o.sname)   )t   )         排名 
 from   a   o    
 group   by   o.sname   
       看的人   在查询分析器看下      是正确的 
    这是一个高手写的一个排序,我的要求跟这有点不一样   ,我表中的a   需要有参数输入的            其中的table      a   需要查询下   ,也就是select   sum(score),......   from         realtable   where   month   in   (4,5,6)   group   by      ....   需要输入参数动态查询某个季度的排名,各位高手可以以   4   ,5   ,6   月为例子      写个SQL              
 另外      以上的这句   select   sum(score)   s   from   a   i   where   i.sname=o.sname)      实在看不懂   
 谢谢 
------解决方案--------------------create table a 
 (sname int, 
  smonth int, 
  score int)   
 insert into a values ( 1,7,80) 
 insert into a values ( 1,8,40) 
 insert into a values ( 1,9,80) 
 insert into a values ( 2,7,50) 
 insert into a values ( 2,8,40) 
 insert into a values ( 2,9,60) 
 insert into a values ( 3,7,50) 
 insert into a values ( 3,8,80) 
 insert into a values ( 3,9,60)   
 --SQL 
 select sname, 
 [7月]=sum(case when smonth=7 then score else 0 end), 
 [8月]=sum(case when smonth=8 then score else 0 end), 
 [9月]=sum(case when smonth=9 then score else 0 end), 
 [总分]=sum(score), 
 [排名]=( select count(*)+1 from( 
 select col=1 from a group by sname having sum(score)> sum(tmpA.score) 
 ) tmp 
 ) 
 from a tmpA 
 group by sname   
 --result 
 sname       7月          8月          9月          总分          排名           
 ----------- ----------- ----------- ----------- ----------- -----------  
 1           80          40          80          200         1 
 2           50          40          60          150         3 
 3           50          80          60          190         2   
 (3 row(s) affected)