select count(*) from @TempTable where zongfeng > a.zongfeng
这是一个汇总。条件是按照大于某个zongfeng值。而这个zongfeng值就是有表检索中的每一行中数据来提供的。
意思就是:检索每一行数据,对取出的每个zongfeng在自身表中统计比它大的数据有多少个,可以说是个排名情况。

解决方案 »

  1.   

    select (select count(*) from @TempTable where zongfeng > a.zongfeng) as 
    mingci...from @temptable a
    =====>含义:‘在所有记录中总分比自己大的有几人’作为‘mingci’字段
    where zongfeng(所有人) > a.zongfeng(自己)
      

  2.   

    declare @TempTable table(xuehao varchar(4),xingming varchar(120),zongfeng decimal)
    insert into @TempTable select '0010','lixue',500 union
                           select '0015','zhansi',456 union
                           select '0014','heyao',512 union
                           select '0016','woshi',423
    --
    select (select count(*) from @TempTable   as  b
    where b.zongfeng > a.zongfeng) as 
    --
    mingci ,xuehao,xingming,zongfeng from @TempTable  as a 
    order by zongfeng desc --这样子是不是比较好理解了,其实这个自连接已经是相当于从两个表里查数据库了在查a表数据的同时,我也在统计b表中的数据,b表统计的条件是zongfeng大于当前a表中当前记录的zongfeng值,也就是当前的a.zongfeng,
    意思就是相对于a表的每条记录,都要做一下
    select count(*) from @TempTable   as  b
    where b.zongfeng > a.zongfeng