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

Откуда:
Сообщений: 3
Добрый день. Мне необходимо из следующей таблицы выбрать те записи где дата максимальна для каждого id.

id // P1// T1// time //counter
1 // 2.4//3.2//11.05.09 11:05:07 //1
2// 2.3//2.3//11.05.09 11:12:07 //2
1//2.0//2.1//11.05.09 11:06:17 //3

MSServer 2005, counter - ключ

должно получиться следующее
id // P1// T1// time //counter
2// 2.3//2.3//11.05.09 11:12:07 //2
1//2.0//2.1//11.05.09 11:06:17 //3

Помогите пожалуйста составить запрос
21 сен 09, 22:47    [7689514]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать по максимальной дате  [new]
iljy
Member

Откуда:
Сообщений: 8711
Romiros82,

а поиском воспользоваться? Сто раз уже такое было...
select top 1 with ties id, P1, T1, time, counter
from table_1
order by row_number() over(partition by id order by time desc)
21 сен 09, 22:59    [7689548]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать по максимальной дате  [new]
Romiros82
Member

Откуда:
Сообщений: 3
Спасибо большое, кучу тем посмотрел на такое не наткнулся или не там смотрел
21 сен 09, 23:11    [7689588]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать по максимальной дате  [new]
iljy
Member

Откуда:
Сообщений: 8711
Romiros82,

пожалуйста, но на большой таблице это решение может оказаться медленным. Есть варианты например такие:
select t2.id, P1, T1, t2.time, counter from
(select id, max(time) time from table_1 group by id) t1
join table_1 t2 on t1.id = t2.id and t1.time = t2.time
21 сен 09, 23:25    [7689635]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить