2012-05-30 2 views
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 

Я получил этот запрос с веб-сайта, но когда я запустил его в SQL Server Management Studio, он дает мне следующую ошибку, пожалуйста, помогите мне, у меня есть интуиция, что его просто синтаксическая ошибка что топала меня здесь, пожалуйста, помогите мнеНеправильная ошибка синтаксиса в SQL-запросе

Msg 156, Level 15, State 1, Line 10
Неправильный синтаксис около ключевого слова 'SELECT'

ответ

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 
+0

СПАСИБО МАТЕМ !!! И Я ОТКАЗАЛ ВАШ ОТВЕТ, КАК ИСКУССТВЕННЫЙ ОТВЕТ !!! – user8189

Смежные вопросы