根据SQL中的列值定位行

时间:2014-01-08 18:47:55

标签: sql sql-server

我想根据特定的列值在表位中给出行。

例如:将具有学生姓名和标记的表格中的数据插入到另一个表格中,该表格将根据标记自动在另一列中插入学生位置。应该注意的是,两个或更多具有相同标记的学生将共享一个职位。即如果有3名学生获得60,那么他们将拥有相同的职位。 我有一个包含学生姓名和标记的表格,我必须插入一个新表格,该表格也会有职位列。

请帮助我在SQL中实现这一目标。

好的,我说我的表中有以下数据:

  

StudentNo StudentMark
  6548 | 79个
  8762 | 60个
  6874 | 58个
  3876 | 70个
  3676 | 60

我想插入另一个表格,看起来像这样:

  

StudentNo | StudentMark |位置
  6548 | 79 | 1
  3876 | 70 | 2
  3676 | 60 | 3
  8762 | 60 | 3
  6874 | 58 | 4

2 个答案:

答案 0 :(得分:1)

我们现在需要一个表格布局或SQL语句来帮助您,但this文档可能就是您需要的。如果您需要更多帮助,请更新您的问题。

示例:

select name
, dense_rank() over (order by mark) position
from table
order
by position

答案 1 :(得分:0)

我认为你的陈述应该是这样的:

insert into Rank_Students(
 UserName,
 Mark, 
 Rank
)
select
 s.UserName,
 s.Mark,
 rank() over (order by s.Mark asc) as Position
from Student
;

如果你不想要排名,我应该使用Dense_Rank。