Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Как взять определённое число строк из запроса


Автор: igluk 29.3.2011, 11:53
Запрос такого плана, самый простой:

Код

select top 10 * from logs
order by timelog desc


Вернёт мне то, что мне и нужно, но а что делать, если вместо "10" у меня параметр?
Пробовал вот так, например:

Код

declare @countrows int;
set @countrows = 10;

select top @countrows * from logs
order by timelog desc


СУБД ругается:


Msg 102, Level 15, State 1, Line 3
Incorrect syntax near '@countrows'.


Как написать запрос, чтобы он отдавал мне то число строк, которое я задал в параметре? Спасибо.

Автор: Akina 29.3.2011, 12:00
Используйте Prepared statement, например...

Автор: Zloxa 29.3.2011, 12:06
Код

select *
from (
  select  l.*, row_number() over (order by timelog desc) rn 
  from logs l
) s
wehre rn <= @countrows
order by timelog desc

Автор: igluk 29.3.2011, 12:26
Zloxa, спасибо, сейчас попробую разобраться. Вижу, работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)