У меня есть несколько простых записей ниже.
CREATE TABLE TEMPS
(
ID INT,
ENTRY_DT DATETIME,
BIRTH_DT DATETIME,
NAMES VARCHAR (25)
)
INSERT INTO TEMPS
VALUES ('123', '6/10/2015', '2/6/2018', 'JOHN'),
('123', '2/4/2018', '2/6/2018', 'SMITH'),
('123', '2/4/2018', '2/6/2018', 'DOE')
Возвращает
ID Entry_Date Birth_Date Name
-----------------------------------
123 6/10/2015 2/6/2018 John
123 2/4/2018 2/6/2018 Smith
123 2/4/2018 2/6/2018 Doe
Я пытаюсь найти записи, где дата или даты из столбца Entry_Date были ближе (в пределах 3-6 месяцев) из столбца Birth_Date.Например, в этой таблице TEMP есть 2 записи с датой ввода 2/4/18, которая была близка к дате рождения 2/6/18.Вот что я попробовал с двумя шагами:
Шаг 1:
SELECT
id,
MIN(entry_dt) AS entry_dt
INTO
test
FROM
temps
GROUP BY
id
Шаг 2:
SELECT *
FROM temps a
INNER JOIN test b ON a.id = b.id
WHERE a.entry_dt > b.entry_dt
Что было бы более эффективным способом получить больше записейчем временная таблица и каков наилучший способ отфильтровать записи, которые попадают в течение 3-6 месяцев до даты рождения?