Как получить последние записи столбца даты, когда результат должен быть отфильтрован с уникальным именем столбца в SQL? - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть таблица, как показано ниже:

enter image description here

Я хочу написать SQL-запрос, чтобы получить вывод, как показано ниже:

enter image description here

запрос должен выбрать все записи из таблицы, но если несколько записей имеют одинаковое значение столбца Id, тогда должна быть только одна запись с самой последней датой.Например, здесь идентификатор Rudolf id 1211 присутствует три раза на входе - на выходе выбирается только одна запись Rudolf с датой 06-12-2010.То же самое с Джеймсом.

Я пытался написать запрос, но он не был успешным.Поэтому, пожалуйста, помогите мне сформировать строку запроса в SQL.

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

вы можете использовать с галстуками

    select top 1 PERCENT WITH TIES * from t
    order by (row_number() over(partition by id order by date desc))

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=280b7412b5c0c04c208f2914b44c7ce3

0 голосов
/ 17 сентября 2018

Как видно из вашего примера, повторяющиеся строки отличаются только датой.Если это так, то простая GROUP BY с MAX агрегатной функцией сделает всю работу за вас.

SELECT Id, Name, Place, MAX(Date) 
FROM [TABLE_NAME]
GROUP BY Id, Name, Place

Вот рабочий пример: http://sqlfiddle.com/#!18/7025e/2

0 голосов
/ 17 сентября 2018

Вы можете разделить свои данные на Date Desc и получить первый ряд каждого раздела

SELECT A.Id, A.Name, A.Place, A.Date FROM (
   SELECT 
     *,
     ROW_NUMBER() OVER (PARTITION BY Id ORDER BY Date DESC) AS rn 
   FROM [Table]
) A WHERE A.rn = 1
...