【发布时间】:2019-05-01 20:14:58
【问题描述】:
如果第二个职位是在第一个职位结束后的第二天开始的,我正在尝试找到一种使用 sql 更新任何用户的就业结束日期的方法。提前致谢!
这是我的数据:
DECLARE @EmploymentDateRanges TABLE
(
ID INT IDENTITY (1, 1),
StartDate DATETIME,
EndDate DATETIME
)
INSERT INTO @EmploymentDateRanges
VALUES ('11/1/2018', null)
INSERT INTO @EmploymentDateRanges
VALUES ('8/24/1995', '10/31/2018')
INSERT INTO @EmploymentDateRanges
VALUES ('5/25/1990', '8/24/1994')
如您所见,第一个插入语句中的开始日期是第二个插入语句中结束日期之后的第二天。
我的预期结果是仅更新第二个插入语句中的 enddate 并将其设置为 null。
第三个插入语句中的结束日期不应更改,因为第三个语句中的结束日期与第二个语句中的开始日期之间的差异超过 1 天
【问题讨论】:
-
我试过了,但是没有用: UPDATE EmploymentDateRanges SET EndDate = GETDATE() WHERE ID in (SELECT ID FROM EmploymentDateRanges WHERE EndDate IS NOT NULL GROUP BY ID, StartDate, EndDate HAVING DATEDIFF(DAY,MIN(EndDate), MAX(StartDate))
标签: sql-server