有过类似的贴子
自己找找吧

解决方案 »

  1.   

    create table 依伊尘埃 (Exam varchar(10),Name varchar(10),Grade int,Class varchar(10),Subject varchar(10),Score int,总分级名次 int)
    insert 依伊尘埃 values('001','A',2002,'一(1)','数学',80,1)
    insert 依伊尘埃 values('001','A',2002,'一(1)','语文',90,1)
    insert 依伊尘埃 values('005','E',2002,'一(1)','数学',100,1)
    insert 依伊尘埃 values('005','E',2002,'一(1)','语文',70,1)
    insert 依伊尘埃 values('002','B',2002,'一(1)','数学',70,3)
    insert 依伊尘埃 values('002','B',2002,'一(1)','语文',80,3)
    insert 依伊尘埃 values('003','C',2002,'一(2)','语文',73,2)
    insert 依伊尘埃 values('003','C',2002,'一(2)','数学',90,2)
    insert 依伊尘埃 values('004','D',1999,'四(1)','英语',68,1)declare @sql varchar(8000),@sql1 varchar(1000),@sql2 varchar(1000)
    select @sql = 'select Class,',@sql1='select *,',@sql2='select * from #大力 union all select ''全级'''select @sql1=@sql1+'isnull(['+cast(总分级名次 as varchar)+'至'+cast(总分级名次+1 as varchar)+'],0)+',
    @sql2=@sql2+',sum(['+cast(总分级名次 as varchar)+'至'+cast(总分级名次+1 as varchar)+'])',
    @sql=@sql+'sum(case when 总分级名次 between '+cast(总分级名次 as varchar)+' and '+cast(总分级名次+1 as varchar)+'
                              then 1 else null end) as '''+cast(总分级名次 as varchar)+'至'+cast(总分级名次+1 as varchar)+''','
      from (select case when 总分级名次%2=0 then 总分级名次-1 else 总分级名次 end 总分级名次  from 依伊尘埃 group by case when 总分级名次%2=0 then 总分级名次-1 else 总分级名次 end) as aselect @sql1=left(@sql1,len(@sql1)-1)+' 参考人数 into #大力 from(',
    @sql=@sql1+left(@sql,len(@sql)-1)+' from (select  Class,Exam,总分级名次 from 依伊尘埃 a where Class like ''一%''  group by Class,Exam,总分级名次) tem where Class like ''一%'' group by Class) temp1;'+@sql2+',sum(参考人数) from #大力'exec(@sql)drop table 依伊尘埃 --本来不想删掉但...xixi :)
      

  2.   

    我盼呀望呀!睁大双眼看着月升月落,终于还是在旭日初升时,盼到大力出来啦!(没办法,你贴出来的时候我已经回家啰)
      早呀,大力。我马上试试。
      

  3.   

    大力,做出这道题会不会很有成就感,我看了半天,只是弄明白一点点
      唉,尘埃就是尘埃,永远是那么的一点点一点点。
      
      哎,大力最近很忙吧,好像很少见到你,小心过于疲劳。