我需要使用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)我做错了什么?能给我合适的吗?
发布于 2010-12-28 18:39:28
首先,我在你的列表中看到了500个。如果薪水不是数字,则使用字符串排序。因此它将是10000,9000,8000,7000,6000,5000,4000,3000,2000,1000。您确实应该更改列数据类型,但如果您不能这样做,您将需要使用convert函数,例如convert(numeric(9,2),Salary)。
此外,我认为你最好使用等级函数- 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发布于 2010-12-28 18:24:22
问题出在哪里:
SELECT TOP 10 Salary
FROM User2
ORDER BY Salary DESC发布于 2010-12-28 18:27:46
你似乎把事情搞得太复杂了。
试试看下水吧。
SELECT TOP 10 Salary FROM User2 ORDER BY Salary DESChttps://stackoverflow.com/questions/4545314
复制相似问题