我需要使用TOP
解决这个问题我使用以下查询显示前10名薪水
SELECT Salary
from
(
SELECT Salary, Row_Number() OVER(ORDER BY SALARY DESC) AS 'Salaries'
FROM User2
)#emp
WHERE Salaries <=10
但我的名单是9000,8000,7000,6000,5000,500,4000,3000,2000,10000 ..
这里缺少1000个
我尝试做什么
WHERE Salaries <10 (but 10000 is not displaying)
我犯了什么错可以给我一个合适的
答案 0 :(得分:2)
出了什么问题:
SELECT TOP 10 Salary
FROM User2
ORDER BY Salary DESC
答案 1 :(得分:2)
首先,我在列表中看到500。如果工资不是数字,则使用字符串排序。所以它将是10000,9000,8000,7000,6000,5000,4000,3000,2000,1000。你真的应该改变列数据类型,但如果你不能,你将需要使用转换函数,例如转换(数字(9,2),工资)。
另外,我认为你最好使用Rank函数 - http://msdn.microsoft.com/en-us/library/ms176102.aspx,因为它可以做你想做的事情。然后,如果你需要前15名,你只需要做出改变。
示例:
SELECT Salary
FROM
(SELECT Salary
,RANK() OVER
(ORDER BY SALARY DESC) AS 'RANK' From User2) Salaries
WHERE
Salaries.RANK <= 15
答案 2 :(得分:0)
你似乎过于复杂化了。
请尝试下面的内容。
SELECT TOP 10 Salary FROM User2 ORDER BY Salary DESC