首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL Server中删除同一表中的最小日期

如何在SQL Server中删除同一表中的最小日期
EN

Stack Overflow用户
提问于 2019-04-13 00:47:11
回答 1查看 232关注 0票数 -2

下面我有一些简单的记录。

代码语言:javascript
复制
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')

它返回

代码语言:javascript
复制
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个月范围内)的记录。例如,在此临时表中,有2条记录的输入日期为2/4/18,接近出生日期2/6/18。以下是我尝试的两个步骤:

步骤1:

代码语言:javascript
复制
SELECT
    id, 
    MIN(entry_dt) AS entry_dt
INTO
    test
FROM
    temps
GROUP BY 
    id

第2步:

代码语言:javascript
复制
SELECT * 
FROM temps a 
INNER JOIN test b ON a.id = b.id
WHERE a.entry_dt > b.entry_dt

比临时表更有效地提取更多记录的方法是什么?过滤离出生日期3-6个月的记录的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-04-13 15:54:20

不需要使用insert data to test table。您可以在where子句中添加条件。

代码语言:javascript
复制
where birth_dt between entry_dt and dateadd(month,3,entry_dt)

查询

代码语言:javascript
复制
select * 
from TEMPS
where birth_dt between entry_dt and dateadd(month,3,entry_dt)

输出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55656298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档