Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 select top ...  [new]
With out Name
Member

Откуда:
Сообщений: 88
Вот запросики

declare @i int

declare @a int
declare @minIdOnPage int
set @minIdOnPage = 13
--declare @Q int

--set @Q = 5

select @i = min(id), @a = max(id) from
(select top 5 * from e_Theme where id >= @minIdOnPage order by ID ASC) as e_MinMax
SELECT count(id) AS c_qnt FROM e_Message
WHERE c_idT >= @i AND c_idT <= @a

все хорошо, но...

очень хотелось бы что бы вместо фиксированного значения 5 в
...select top 5 * from e_Theme ...

было что-то типа
select top @Q * from e_Theme 


Подскажите, плиз, как быть.
5 дек 03, 00:37    [447701]     Ответить | Цитировать Сообщить модератору
 Re: select top ...  [new]
rwrerwerwrewer
Guest
смотрите help по SET ROWCOUNT

и запрос можно переделать


select top 5
@i = min(id), @a = max(id)
from
e_Theme where id >= @minIdOnPage
order by
ID


А все вместе вот так


DECLARE @Cnt
SET @Cnt = 5

SET ROWCOUNT @Cnt
select
@i = min(id), @a = max(id)
from
e_Theme where id >= @minIdOnPage
order by
ID
SET ROWCOUNT 0
5 дек 03, 02:34    [447723]     Ответить | Цитировать Сообщить модератору
 Re: select top ...  [new]
With out Name
Member

Откуда:
Сообщений: 88
Позвольте с вами не согласиться.
Код который Вы привели работает не так как мой.
т.е.

SET ROWCOUNT 5

select
min(id), max(id)
from
e_Theme where id >= 12
SET ROWCOUNT 0

Вернет два поля , но max будет не из пяти а из всех, мне нужно немного другое...

Мне надо найти мин мах внутри, скажем пятерки строк.

Я вэтом случае ставил SET ROWCOUNT, но как я понял на вложенные запросы он не работает, а если работает то как? В итоге проблема пока не решена.
5 дек 03, 10:22    [447952]     Ответить | Цитировать Сообщить модератору
 Re: select top ...  [new]
Glory
Member

Откуда:
Сообщений: 104760
declare @i int

declare @a int
declare @minIdOnPage int
set @minIdOnPage = 13
declare @Q int
set @Q = 5
set rowcount @Q
select * into #temp from e_Theme where id >= @minIdOnPage order by ID ASC
set rowcount 0

select @i = min(id), @a = max(id) from #temp as e_MinMax
SELECT count(id) AS c_qnt FROM e_Message
WHERE c_idT >= @i AND c_idT <= @a
5 дек 03, 10:26    [447957]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить