Я пишу запросы SQL Server и нуждаюсь в решении, как фильтровать строки, которые возвращаются должным образом.T-SQL - Фильтрация записей на основе даты
Основная настройка следующая: я выбираю группу записей из таблицы, основанной главным образом на идентификаторе. Таким образом, для данного идентификатора может быть 100 записей, которые первоначально возвращаются. Однако в этих 100 записях есть несколько из них, которые нужно удалить - не потому, что они дубликаты, а потому, что они новее, чем другие. Поэтому мне просто нужен способ дальнейшего фильтрации результатов на основе того, какая запись была создана/изменена совсем недавно.
Я знаю, что в идеале эти «старые» записи не должны быть в базе данных, но у меня нет контроля над этим. Что происходит, по сути, люди обновляют записи с течением времени, чтобы отражать новую информацию, но вместо редактирования «старой» записи каждый вводится каждый раз. Таким образом, для данного идентификатора может быть 3 записи, но мне нужен только тот, который был недавно введен.
Есть ли простой способ сделать это в строке запроса T-SQL? Он будет похож на функцию «Last of» в запросах Access. У меня есть правильно отформатированный столбец даты для каждой записи.
Спасибо!
Моя строка запроса до сих пор (простите синтаксис VB):
"SELECT *" & _
"FROM Performance_Override " & _
"WHERE ([Deal_Name] = " & "'" & Range("ID").value & "'" & " or" & _
" [UNIQUE_ID] LIKE " & "'" & "%SPLIT_LOAN%" & "')" & " AND" & _
" ([Scenario] = " & "'" & "BASE" & "')" & _
"ORDER BY [Date] ASC; "
Вы имеете в виду это? http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group –
Вы можете просто выбрать максимальное значение столбца DateTime с этим идентификатором, а затем сделать заявление, удаляющее что-либо меньшее, чем это дата с тем же идентификатором. –
Если вы покажете нам запрос, который у вас есть до сих пор, что может помочь. – offthat