2014-01-08 46 views
0

我想根據特定的列值爲表中的行提供位置。根據列值在SQL中定位行

例如:從包含學生名稱和標記的表格中插入數據到另一個表格中,該表格將根據其標記自動將學生位置插入到另一列中。應該指出,兩個或更多具有相同標記的學生將分享一個職位。即如果有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

+0

按'位置'你是指'排名'? –

+1

你能給一些樣本數據和樣本想要的結果嗎?最好有兩個相等的排名。 –

回答

1

我們需要一個表格佈局或者SQL語句來幫助您更好地進行,但是this文檔可能是您需要的。如果您需要更多幫助,請更新您的問題。

例子:

select name 
, dense_rank() over (order by mark) position 
from table 
order 
by position 
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我想。