Ответ 1
SELECT *
FROM Table
WHERE Date = ( SELECT MAX(Date)
FROM Table
WHERE Date < ( SELECT MAX(Date)
FROM Table
)
) ;
или
SELECT TOP (1) *
FROM Table
WHERE Date < ( SELECT MAX(Date)
FROM Table
)
ORDER BY Date DESC ;
или
SELECT *
FROM
( SELECT t.*
, ROW_NUMBER() OVER(ORDER BY Date DESC) AS RowNumber
FROM Table t
) AS tmp
WHERE RowNumber = 2 ;
Если столбец Date
имеет уникальные значения, все три запроса дадут тот же результат. Если столбец может иметь повторяющиеся даты, тогда они могут давать разные результаты (когда есть связи на 1-м или 2-м месте). Первый запрос даже даст несколько строк в результате, если на втором месте есть ссылки.