2017-09-03 10 views
0

私は、次の表Employeeがあります、しかしSQL:にSyntaxError:ORDER BY ROW_NUMBER()関数

with t as 
(
    select 
     Salary, 
     row_number() over (order by Salary desc) as salary_ord 
    from 
     Employee 
) 
select Salary 
from t 
where salary_ord == 2 

+----+--------+ 
| Id | Salary | 
+----+--------+ 
| 1 | 150 | 
| 2 | 290 | 
| 3 | 302 | 
+----+--------+ 

を私は二番目に高い給与を見つけるために、次のコードを使用していますエラーが表示されます:

SyntaxError: near 't as (
select Salary, row_number() over (order by Salary desc) as salary_ord'

ここで私は何をしましたか?ありがとう!

+1

何データベースを使用していますか?適切なタグを付けてください。 –

答えて

2

SQLでは、正しい比較演算子はではなく=です。だから、これはあなたのクエリのANSI SQLバージョンです:

with t as (
     select Salary, row_number() over (order by Salary desc) as salary_ord 
     from Employee 
    ) 
select Salary 
from t 
where salary_ord = 2; 

しかし、あなたのエラーは、データベースがwithまたはウィンドウの機能をサポートしていないことを示唆しています。

あなたが行うことができますSQL Serverでの
0

:あなたは

select top 1 Salary 
from Employee 
order by Salary desc 
offset 1 row fetch next 1 row only 
関連する問題