2010-12-31 1 views
0
With Results as 
(
    SELECT Top(100) percent ROW_NUMBER() over (Order by (select 1)) as RowNumber, 
    Ad.Date, Title 
    FROM Ad inner join Job on Ad.Id = Job.AdId 
    Order by 
    case When @sortCol='Date' and @sortDir='ASC' Then Date End ASC, 
    case When @sortCol='Date' and @sortDir='DESC' Then Date End DESC 
) 
Select * from Results 
Where RowNumber BETWEEN @FirstRow AND @LastRow 
END 

Что бы ни было передано в @sortDir и @sortCol, это не сработает. Что я делаю неправильно?Упорядочить: не работает

+2

Постарайтесь не удалять вопросы, когда у вас есть ответ, и я вам поможем .. http://stackoverflow.com/questions/4568723/invalid-column-name/4568788#4568788 – bAN

+0

Первая мысль - shouldn ' т ваш заказ by by должен быть в запросе «SELECT * FROM Results»? –

+0

Да, я пробовал это, но затем пейджинг работает не так, как ожидалось, поскольку Row_Number основан на заказе. – coure2011

ответ

3

Перемещение пункта order by в список аргументов Row_Number может решить вашу проблему.

Order by в статье with не допускается.

+0

Как получить общее количество результатов в выходной параметр? – coure2011

+0

Ничего в моем сознании, кроме дополнительного select @count = count (*) :-( –