Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 使用行号()显示前10名薪资的问题重新分级_Sql Server 2005 - Fatal编程技术网

Sql server 2005 使用行号()显示前10名薪资的问题重新分级

Sql server 2005 使用行号()显示前10名薪资的问题重新分级,sql-server-2005,Sql Server 2005,我需要用TOP解决这个问题 我使用以下查询来显示前10名薪资 SELECT Salary from ( SELECT Salary, Row_Number() OVER(ORDER BY SALARY DESC) AS 'Salaries' FROM User2 )#emp WHERE Salaries <=10 但我得到的名单是90008007006000500400030002000100

我需要用TOP解决这个问题

我使用以下查询来显示前10名薪资

     SELECT  Salary
     from
     (
       SELECT  Salary, Row_Number() OVER(ORDER BY SALARY DESC) AS 'Salaries'
       FROM User2
     )#emp 

          WHERE Salaries <=10
但我得到的名单是900080070060005004000300020001000

这里少了1000人

我试着做些什么

        WHERE Salaries <10 (but 10000 is not displaying)
我做错了什么?能给我一个合适的吗

SELECT TOP 10 Salary 
FROM User2 
ORDER BY Salary DESC
有什么问题吗

SELECT TOP 10 Salary 
FROM User2 
ORDER BY Salary DESC

你似乎把事情复杂化了

试试下面的方法

SELECT TOP 10 Salary FROM User2 ORDER BY Salary DESC

你似乎把事情复杂化了

试试下面的方法

SELECT TOP 10 Salary FROM User2 ORDER BY Salary DESC

首先,我在你的名单上看到500个。如果工资不是数字,则使用字符串排序。所以它将是10000,9000800700600050004000300020011000。您确实应该更改列数据类型,但如果不能更改,则需要使用转换函数,例如convertnumeric9,2,Salary

另外,我认为使用Rank函数会更好,因为它做的是您想要做的事情。如果你需要前15名,你只需要做出改变

例如:

SELECT Salary
FROM
(SELECT Salary
    ,RANK() OVER 
    (ORDER BY SALARY DESC) AS 'RANK' From User2) Salaries
WHERE
 Salaries.RANK <= 15

首先,我在你的名单上看到500个。如果工资不是数字,则使用字符串排序。所以它将是10000,9000800700600050004000300020011000。您确实应该更改列数据类型,但如果不能更改,则需要使用转换函数,例如convertnumeric9,2,Salary

另外,我认为使用Rank函数会更好,因为它做的是您想要做的事情。如果你需要前15名,你只需要做出改变

例如:

SELECT Salary
FROM
(SELECT Salary
    ,RANK() OVER 
    (ORDER BY SALARY DESC) AS 'RANK' From User2) Salaries
WHERE
 Salaries.RANK <= 15

“salarys”需要引号吗?“salarys”需要引号吗?没错,但问题仍然存在,因为Salary是一个字符串。@Wade73:原始问题中没有明确说明,但您自己注意到了。我将不得不质疑模式设计的决定,让它成为一个字符串放在首位。。。!我完全同意你的看法,只是想指出,海报确实不明白他们的问题不仅仅是获得前十名。没错,但问题仍然存在,因为工资是一个字符串。@Wade73:在最初的问题中没有明确说明,而是你自己注意到的。我将不得不质疑模式设计的决定,让它成为一个字符串放在首位。。。!我完全同意你的看法,只是想指出,海报真的不明白他们的问题不仅仅是获得前10名。注意到工资是一个字符串。无价之宝+1.注意到工资是一个字符串。无价的