请帮忙。我有一个选择的麻烦。我有一个包含试用期的表,其中包含以下列:
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