【发布时间】:2014-05-19 14:54:53
【问题描述】:
我有一个查询,它根据多个条件计算点,然后根据这些点对结果集进行排序。
SELECT * FROM (
SELECT
dbo.afunctionthatcalculates(Something, Something) AS Points1
,dbo.anotherone(Something, Something) AS Points2
,dbo.anotherone(Something, Something) AS Points3
,[TotalPoints] = dbo.function(something) + dbo.function(something)
) AS MyData
ORDER BY MyData.TotalPoints
所以我第一次尝试添加展示位置、排名……是这样的:
SELECT ROW_NUMBER() OVER(MyData.TotalPoints) AS Ranking, * FROM (
SELECT same as above
) AS MyData
ORDER BY MyData.TotalPoints
这会添加排名列,但在积分相同时不起作用。
Rank | TotalPoints
--------------------
1 100
2 90
3 90
4 80
应该是:
Rank | TotalPoints
--------------------
1 100
2 90
2 90
3 80
不太清楚如何解决这个问题。
感谢您的帮助。
【问题讨论】:
标签: sql sql-server sql-server-2008 sql-server-2012