我在下面有一些简单的记录。
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列中查找离Birth_Date列较近(3-6个月范围内)的日期的记录。例如,在此TEMPs表中,有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个月内的记录的最佳方法是什么?