34,590
社区成员
发帖
与我相关
我的任务
分享
--#3修改后(把@田赛成绩 改成你的表名)
select * from
(select *,
(select count(1) from 田赛成绩 where [成绩(m)]>=t.[成绩(m)] and 场次=t.场次) as 名次
from 田赛成绩 t
) aa order by 场次,名次
--#3修改后
select * from
(select *,
(select count(1) from @田赛成绩 where [成绩(m)]>=t.[成绩(m)] and 场次=t.场次) as 名次
from @田赛成绩 t
) aa order by 场次,名次
declare @田赛成绩 table
(性别 varchar(2),项目 varchar(4),场次 int,姓名 varchar(4),
出赛次序 int,[成绩(m)] numeric(3,2))
insert into @田赛成绩
select '男','跳远',101,'李一',1,4.86 union all
select '男','跳远',101,'李二',2,5.86 union all
select '男','跳远',101,'李三',3,3.86 union all
select '男','跳远',102,'李四',1,3.11 union all
select '男','跳远',102,'李五',2,4.11 union all
select '男','跳远',102,'李六',3,5.11
--SQL SERVER 2000 没有row_number
select *,
名次=(select count(1) from @田赛成绩 where [成绩(m)]>=t.[成绩(m)] and 场次=t.场次)
from @田赛成绩 t order by 场次,7
/*
性别 项目 场次 姓名 出赛次序 成绩(m) 名次
---- ---- ----------- ---- ----------- ------------------- -----------
男 跳远 101 李二 2 5.86 1
男 跳远 101 李一 1 4.86 2
男 跳远 101 李三 3 3.86 3
男 跳远 102 李六 3 5.11 1
男 跳远 102 李五 2 4.11 2
男 跳远 102 李四 1 3.11 3
*/
declare @田赛成绩 table
(性别 varchar(2),项目 varchar(4),场次 int,姓名 varchar(4),
出赛次序 int,[成绩(m)] numeric(3,2))
insert into @田赛成绩
select '男','跳远',101,'李一',1,4.86 union all
select '男','跳远',101,'李二',2,5.86 union all
select '男','跳远',101,'李三',3,3.86 union all
select '男','跳远',102,'李四',1,3.11 union all
select '男','跳远',102,'李五',2,4.11 union all
select '男','跳远',102,'李六',3,5.11
select *,row_number() over (partition by 场次 order by [成绩(m)] desc)
as 名次 from @田赛成绩
/*
性别 项目 场次 姓名 出赛次序 成绩(m) 名次
---- ---- ----------- ---- ----------- ------------------- --------------------
男 跳远 101 李二 2 5.86 1
男 跳远 101 李一 1 4.86 2
男 跳远 101 李三 3 3.86 3
男 跳远 102 李六 3 5.11 1
男 跳远 102 李五 2 4.11 2
男 跳远 102 李四 1 3.11 3
*/