当条件依赖于行时,如何从表中进行SELECT



请帮忙。我有一个选择的麻烦。我有一个包含试用期的表,其中包含以下列:

CREATE TABLE probation (
pk_person int,
p_startdate datetime,
p_enddate datetime,
PRIMARY KEY (pk_person )
)

和包含以下列的人员缺席表:

CREATE TABLE absences (
pk_person int,
a_startdate datetime,
a_enddate datetime,
)

现在,我需要计算一下这个人的试用期结束时间。问题是,缺勤实际上延长了试用期。例如:

insert into probation (pk_person, p_startdate, p_enddate) values (1, 01-01-2001, 31-03-2001)
insert into absences (pk_person, a_startdate, a_enddate) values (1, 01-02-2001, 28-02-2001)
insert into absences (pk_person, a_startdate, a_enddate) values (1, 01-04-2001, 10-04-2001)

现在我需要为结果如下的人选择完整的试用期:

pk_person, startdate, enddate
1          01-01-2001 08-05-2001

我可以使用存储过程,但由于某些原因不能这样做。我正在使用MSSQL 2008。谢谢!

Select

Int

大名单。开始日期

大名单。结束日期

Datediff(天,大列表)开始日期,长长的清单。结束日期)作为原始持续时间

Sum(datediff(day, small list))开始日期,小列表。结束日期)作为总额外时间

DateAdd(日,大列表)开始日期,Sum(datediff)(日),小列表。开始日期,小列表。结束日期))作为新的结束日期

大列表左外连接小列表到大列表。int =小列表。int

由集团大list.everything

最新更新