Sql server 在执行SQL查询时需要帮助吗

Sql server 在执行SQL查询时需要帮助吗,sql-server,Sql Server,我对SQL Server还很陌生 这是我的表格结构: id int name string value int 样本数据: id name value ------------- 1 a 20 2 b 30 3 c 10 4 d 50 5 e 60 6 f 60 我需要得到这个结果 id name value rank ------------------ 1 a 20 2 2 b 30 3

我对SQL Server还很陌生

这是我的表格结构:

id      int 
name    string
value   int
样本数据:

id name value 
-------------
1  a    20
2  b    30
3  c    10
4  d    50
5  e    60
6  f    60 
我需要得到这个结果

id name value rank
------------------
1  a    20    2
2  b    30    3
3  c    10    1
4  d    50    4
5  e    60    5
6  f    60    5
我在搜索后尝试了这个查询我得到了这个

SELECT 
   *, rank = ROW_NUMBER(OVER ORDER BY value) 
FROM table 

但是它似乎没有得到我想要的?

使用
排名
代替
行数
来获得排名(如果您确实希望排名为1、2、3、4,而不是1、2、3、5、6,请使用
密集排名

以下任何一项都应该有效:

SELECT *, RANK() OVER (ORDER BY value) AS rank
FROM table 


SELECT *, DENSE_RANK() OVER (ORDER BY value) AS rank
FROM table

这就是你必须做的:

select *,DENSE_RANK() OVER 
    (order by value) AS Rank
from Table1
order by id
结果:

ID  NAME    VALUE   RANK
1   a       20      2
2   b       30      3
3   c       10      1
4   d       50      4
5   e       60      5
6   f       60      5
请参阅中的结果


阅读更多关于
densite\u RANK

OP说,他已经尝试了
ROW\u NUMBER()
,但没有得到结果。耶。。但是您的原始帖子使用了
行号
。这不会得到想要的结果。@RagingBull是的。他没有得到想要的结果。因为语法是错误的。无论如何,对不起。我已经做出了想要的改变。请解释为什么?是不是因为我一开始就提供了正确的答案?