Как удалить минимальную дату из той же таблицы в SQL Server - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть несколько простых записей ниже.

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 месяцев до даты рождения?

1 Ответ

0 голосов
/ 13 апреля 2019

Нет необходимости использовать вставку данных в тест table.Вы можете добавить условие в where предложение.

where birth_dt between entry_dt and dateadd(month,3,entry_dt)

Запрос

select * 
from TEMPS
where birth_dt between entry_dt and dateadd(month,3,entry_dt)

Выход enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...