dense_Rank()sql server中的函数应该从1开始,而不是从0开始

时间:2013-03-23 12:38:25

标签: sql sql-server sql-server-2008

我需要根据他们在sql server中的标记给学生排名。如果学生得到0分,则等级应为0或 - 。但是当我使用dense_rank()函数时,排名的顺序从0而不是从1开始。任何人都可以帮我查询示例。

提前致谢。

2 个答案:

答案 0 :(得分:1)

你是说这个吗?

select 
    (case when marks=0 then 0 else DENSE_RANK() over (order by marks desc) end) RNK, 
    marks,
    student
from(
    select 5 as marks, 'a' student union
    select 5 as marks, 'b' student union
    select 0 as marks, 'c' student union
    select 1 as marks, 'd' student union
    select 1 as marks, 'e' student union
    select 3 as marks, 'f' student 
)x
--order by RNK --Add order by clause if 0th rank to come first.

答案 1 :(得分:0)

事实并非如此。

来自DENSE_RANK (Transact-SQL)

  

一行的等级加一个不同等级的数量   在有问题的行之前。

这意味着第一行将是0 + 1 => 1,而不是你所说的0。

这也可以从

中看出

SQL Fiddle DEMO