2014-03-05 20 views
1

我正在使用SQL Server 2008 R2。我在我的數據庫中有一個名爲tstResult的表。如何從SQL Server中的考試結果中生成優點列表

AI SubID StudID StudName TotalMarks ObtainedMarks 
-------------------------------------------------------- 
1 | 1 | 1 | Jakir | 100 | 90 
2 | 1 | 2 | Rubel | 100 | 75 
3 | 1 | 3 | Ruhul | 100 | 82 
4 | 1 | 4 | Beauty | 100 | 82 
5 | 1 | 5 | Bulbul | 100 | 96 
6 | 1 | 6 | Ripon | 100 | 82 
7 | 1 | 7 | Aador | 100 | 76 
8 | 1 | 8 | Jibon | 100 | 80 
9 | 1 | 9 | Rahaat | 100 | 82 

現在我想要一個SELECT查詢,根據獲得的標記生成優劣列表。在這個查詢中,獲得的分數「96」將成爲優秀列表中的最高分,所有「82」分將依次放在優秀列表中。事情是這樣的:

StudID StudName TotalMarks ObtainedMarks Merit List 
---------------------------------------------------------- 
| 5 | Bulbul | 100 |  96  | 1 
| 1 | Jakir | 100 |  90  | 2 
| 9 | Rahaat | 100 |  82  | 3 
| 3 | Ruhul | 100 |  82  | 3 
| 4 | Beauty | 100 |  82  | 3 
| 6 | Ripon | 100 |  82  | 3 
| 8 | Jibon | 100 |  80  | 4 
| 7 | Aador | 100 |  76  | 5 
| 2 | Rubel | 100 |  75  | 6 
+0

爲什麼82會得到好處列表相同的位置在什麼基礎上? – KumarHarsh

回答

2
;with cte as 
(
select *, dense_rank() over (order by ObtainedMarks desc) as Merit_List 
from tstResult 
) 

select * from cte order by Merit_List desc 

你需要使用Dense_rank()

-1
select columns from tstResult order by ObtainedMarks desc