Sql server 在执行SQL查询时需要帮助吗
我对SQL Server还很陌生 这是我的表格结构: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
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是的。他没有得到想要的结果。因为语法是错误的。无论如何,对不起。我已经做出了想要的改变。请解释为什么?是不是因为我一开始就提供了正确的答案?