打印本文 打印本文 关闭窗口 关闭窗口
SQLServer中按某字段排列名次
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1117  更新时间:2007/11/14 12:20:13  文章录入:mintao  责任编辑:mintao
---居然看到有人用游标,SQL就能搞定----

create table Test
(F1 char(10),
 F2 char(10))

--测试表

insert into Test 
select ''''a'''' F1,''''1'''' F2
union
select ''''b'''' F1,''''2'''' F2
union
select ''''c'''' F1,''''3'''' F2
union
select ''''d'''' F1,''''3'''' F2
union
select ''''e'''' F1,''''4'''' F2
union
select ''''f'''' F1,''''4'''' F2
union
select ''''g'''' F1,''''4'''' F2
union
select ''''h'''' F1,''''7'''' F2
union
select ''''i'''' F1,''''9'''' F2

--插入数据

select id=identity(int,0,1),f1,f2 into #t from test order by F2 desc

select a.f1,a.f2,a.id+1-cast(id-cc-minn as Char(10)) as  [名次]
from #t a,
(select f2,cc,minn  from 
  (select  f2,count(*)as cc,min(id)-count(*) as minn from #t group by f2) t)b
where a.f2=b.f2
order by a.f2 desc

--测试

drop table #t
drop table test

--删除表
/*

i          9          1
h          7          2
g          4          3
e          4          3
f          4          3
c          3          6
d          3          6
b          2          8
a          1          9
*/

打印本文 打印本文 关闭窗口 关闭窗口