0
DECLARE @startRowIndex int  
  set @startRowIndex=0
  Declare @maximumRows int 
  set @maximumRows=5

SET ROWCOUNT 5;

WITH OrderedEmployees As

SELECT *, ROW_NUMBER() OVER (Order By EmployeeID ASC) as RowNum FROM Employees 

 SELECT * FROM OrderedEmployees Where RowNum > @startRowIndex
 Order By EmployeeID ASC

Web サイトからこのクエリを取得しましたが、SQL Server Management Studio で実行すると、次のエラーが表示されます。

メッセージ 156、レベル 15、状態 1、行 10
キーワード「SELECT」付近の構文が正しくありません

4

1 に答える 1

3

これがあなたが望むものだと思います:

DECLARE @startRowIndex int  
  set @startRowIndex=0
  Declare @maximumRows int 
  set @maximumRows=5

SET ROWCOUNT 5

;WITH OrderedEmployees As
(
    SELECT *, ROW_NUMBER() OVER (Order By EmployeeID ASC) as RowNum 
    FROM Employees 
)
SELECT * 
FROM OrderedEmployees 
Where RowNum > @startRowIndex
Order By EmployeeID ASC

ROWCOUNTただし、 CTE をフィルタリングするだけでなく、使用することを選択した理由はよくわかりません。私は使うだろう:

DECLARE @startRowIndex int  
  set @startRowIndex=0
  Declare @maximumRows int 
  set @maximumRows=5

;WITH OrderedEmployees As
(
    SELECT *, ROW_NUMBER() OVER (Order By EmployeeID ASC) as RowNum 
    FROM Employees 
)
SELECT * 
FROM OrderedEmployees 
Where RowNum > @startRowIndex AND RowNum <= @maximumRows
Order By EmployeeID ASC
于 2012-05-30T20:59:30.203 に答える