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

Откуда:
Сообщений: 83
Добрый вечер.
Помогите доделать 1 запрос.
Имеется таблица tmp с несколькими полями
ID - ключ автоинкремент
ObjectID - идентификатор объекта
ReceiveTime - время обновления
Я выбираю по 2 записи каждого объекта:
select *from
(
select
r = row_number() over(partition by ObjectID order by ReceiveTime desc),
* from [tmp]
) t
where
r <= 2
order by ObjectID,ReceiveTime


Есть еще одна таблица tmp2 с полями
ID -ключ автоинкремент
SaveID -сохраненный ID после записи ID tmp
ObjectID - идентификатор объекта

Необходимо показывать каждый раз новые 2 записи каждого объекта больше сохраненного идентификатора SaveID

set dateformat YMD
declare @user int
set @user = 88
declare @day int
set @day = 120
select *from
(
select
r = row_number() over(partition by ObjectID order by ReceiveTime desc),
* from [Operative]
) t

FULL JOIN UsersSaveOperative us ON us.ObjectID = t.ObjectID
where
r <= 2 and t.ID >us.SaveOperativeID
order by t.ObjectID,t.ReceiveTime - выбирает теперь 1 или записи, а остальные не показывает
Спасибо
21 окт 13, 20:55    [15010723]     Ответить | Цитировать Сообщить модератору
 Re: Доделать запрос  [new]
Igorgg
Member

Откуда:
Сообщений: 83
Все решил.


set dateformat YMD
select *from
(
select
r = row_number() over(partition by ObjectID order by ReceiveTime desc),
* from [tmp]
) t
r <= 2
and ((t.ID > (Select SaveID from tmp2 k where k.ObjectID = t.ObjectID))
OR (t.ObjectID not in (Select ObjectID from tmp2 k where k.ObjectID = t.ObjectID))
)
21 окт 13, 22:03    [15010960]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить