Как я могу выбрать только самые новые записи из таблицы - PullRequest
1 голос
/ 27 июня 2011

У меня есть таблица с такими заданиями в базе данных MS SQL Server 2008:

J_ID      J_Name       J_ReadDate                  J_I_ID
`````````````````````````````````````````````````````````
01        Job1        2011-06-26 01:00:12.153      1
02        Job2        2011-06-25 01:00:07.103      1
03        Job3        2011-06-25 01:00:07.103      2
04        Job4        2011-06-25 01:00:07.103      3
05        Job1        2011-06-26 01:00:07.103      1
06        Job2        2011-06-26 01:00:08.103      2
07        Job1        2011-06-26 01:00:08.103      2

теперь я хочу выбирать только самые новые вакансии, независимо от того, сколько лет записи. Так что в моем примере он хотел бы получить этот результат (по заказу J_ReadDate DESC):

J_ID      J_Name       J_ReadDate                  J_I_ID
`````````````````````````````````````````````````````````
06        Job2        2011-06-26 01:00:08.103      2
07        Job1        2011-06-26 01:00:08.103      2
05        Job1        2011-06-26 01:00:07.103      1
03        Job3        2011-06-25 01:00:07.103      2
04        Job4        2011-06-25 01:00:07.103      3

как мне этого добиться? Я не могу сказать, что разница во времени между записями всегда составляет один день.

1 Ответ

5 голосов
/ 27 июня 2011

Ниже вы получите то, что вам нужно.

SELECT J_ID, J_Name, J_ReadDate, J_I_ID
FROM (
  SELECT J_ID, J_Name, J_ReadDate, J_I_ID,
         ROW_NUMBER() OVER (PARTITION BY J_Name ORDER BY J_ReadDate DESC) AS RN
  FROM jobs
) J
WHERE J.RN = 1
ORDER BY J_ReadDate DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...