Sql server 如何从SQL Server中的同一个表中删除最小日期
下面我有一些简单的记录Sql server 如何从SQL Server中的同一个表中删除最小日期,sql-server,Sql Server,下面我有一些简单的记录 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', '
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表中,有两条记录的输入日期为2018年4月2日,与2018年6月2日的出生日期相近。以下是我尝试的两个步骤:
步骤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个月内的记录的最佳方法是什么?无需使用insert data to test
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)
输出
2015年10月6日是10月6日还是6月10日?我看不到您在这里删除任何内容,只是选择。请用预期结果澄清您的问题。你说的“比临时表多拉记录”是什么意思?嗨,乔。请不要在你的帖子上签名好吗?我想我以前对你的材料做过这样的编辑。我们不在这里签名-个人资料卡被认为已经足够了。