Teradata - получить 2-ую самую последнюю дату из таблицы и сослаться на нее - PullRequest
0 голосов
/ 10 марта 2020

Допустим, у нас есть таблица с записями и датами выполнения. Он может обновляться в выходные или праздничные дни или просто запускать MF. И эта проверка может выполняться до того, как все нагрузки будут выполнены за день. По этой причине я хочу найти запись до максимальной даты.

Run_Date    Entry
2020-03-09  z
2020-03-06  x
2020-03-05  y

В этом случае я хочу вернуть 3/6/20. Я бы использовал это в CTE или подзапросе.

Этот код возвращает две верхние даты, и мы видим 2-ю дату 3/6, но как мне выделить ее?

SELECT TOP 2
RUN_DATE
FROM DATABSE1.TABLEA
GROUP BY RUN_DATE
ORDER BY RUN_DATE DESC

1 Ответ

1 голос
/ 10 марта 2020
SELECT 
  RUN_DATE
FROM DATABSE1.TABLEA
QALIFY 
  ROW_NUMBER() 
  OVER (ORDER BY RUN_DATE DESC) = 2 -- 2nd highest date

Предполагается, что RUN_DATE уникален, в противном случае переключитесь на DENSE_RANK плюс DISTINCT

...