Выберите последнюю дату в течение 1 года с минимальной даты - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь создать новый столбец, который возвращает последнюю дату в течение 1 года после первой даты.

Пример:

У меня есть следующие даты.

5/6/2011
8/9/2011
3/5/2012
6/8/2012

Таким образом, запрос должен выбрать 3/5/2012 в качестве последней даты в этом сценарии.

Ответы [ 3 ]

0 голосов
/ 10 октября 2019

Предположим, что имя вашего столбца dt, а имя таблицы Tbl

SELECT MAX(dt)
FROM Tbl
WHERE dt < (SELECT MIN(dt) + 365 FROM Tbl)
0 голосов
/ 10 октября 2019

Один метод использует оконные функции:

select max(dt)
from (select t.*, min(dt) over () as min_dt
      from t
     ) t
where dt < dateadd(year, 1, min_dt);

Я думаю, что я предпочитаю коррелированный подзапрос, хотя:

select max(dt)
from t
where dt < (select dateadd(year, 1, min(dt)) from t);
0 голосов
/ 10 октября 2019

Вы можете в значительной степени перевести свою английскую спецификацию в sql для этого:

 SELECT max(d) 
 FROM  t
 WHERE d < (SELECT DATEADD(year, 1, MIN(d)) FROM t)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...