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

Откуда:
Сообщений: 33
Здравствуйте. Есть таблица, содержащая поля AccountSys (значение может повторятся) и Date (datetime), и кое-какие другие, но важные, поля (назовем их условно ValData).
Например:
AccountSys ValData Date
0001aaaa10.10.2012
0001bbbb12.10.2012
0002cccc19.10.2012
0002dddd13.10.2012
0003eeee17.10.2012

Нужно составить запрос так, чтобы получить содержимое таблицы, но с условиями:
1) Каждый AccountSys не должен повторяться (другие записи с тем же AccountSys должны опускаться),
но предпочтение записи отдается по признаку даты:
2) Для каждого AccountSys возвращается запись с наибольшей датой.

То есть примерно это я хочу получить:
AccountSys ValData Date
0001bbbb12.10.2012
0002cccc19.10.2012
0003eeee17.10.2012


Пожалуйста, посоветуйте, как должен выглядеть желанный запрос?
21 ноя 12, 15:02    [13507926]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из таблицы по признаку последней даты  [new]
serpentariy
Member

Откуда:
Сообщений: 265
select top(1) with ties *
from Таблица
order by ROW_NUMBER() over (partition by AccountSys order by [date] desc)
21 ноя 12, 15:23    [13508138]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из таблицы по признаку последней даты  [new]
Гость333
Member

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

Примерно так
SELECT AccountSys, ValData, Date
FROM
    (  SELECT AccountSys, ValData, Date, ROW_NUMBER() OVER(PARTITION BY AccountSys ORDER BY Date DESC) AS Row
       FROM [Table]
    ) t
WHERE t.Row = 1;
21 ноя 12, 15:24    [13508153]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из таблицы по признаку последней даты  [new]
euthanatos
Member

Откуда:
Сообщений: 33
Спасибо, в обоих случаях все работает и после приведения результатов к общему виду они идентичны. Однако, хотелось бы знать в общих чертах, что говорит иностранец =)

То бишь что означает конструкция:
ROW_NUMBER() OVER(PARTITION BY [AccountSys] ORDER BY [Date] DESC


?
21 ноя 12, 15:56    [13508483]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из таблицы по признаку последней даты  [new]
Гузы
Guest
euthanatos,
MSDN+поиск
21 ноя 12, 16:09    [13508600]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из таблицы по признаку последней даты  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34723
Блог
нерешаемо в такой постановке,
пример

0001, aaaa, 12.10.2012
0001, bbbb, 12.10.2012
21 ноя 12, 17:16    [13509299]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из таблицы по признаку последней даты  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
Критик
нерешаемо в такой постановке,
пример

0001, aaaa, 12.10.2012
0001, bbbb, 12.10.2012
RANK()
21 ноя 12, 17:21    [13509339]     Ответить | Цитировать Сообщить модератору
 Re: Выбор записей из таблицы по признаку последней даты  [new]
Добрый Э - Эх
Guest
Кто-нибудь, добавьте уже этот вопрос в ТОП. Всплывает с завидной регулярностью...

2 euthanatos
вот тебе далеко не полная подборка способов решения поставленной задачи
21 ноя 12, 20:51    [13510094]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить