2013-03-11 22 views
0

使用SQL Server 2005如何使日期和时间自动状态

表1

休假表

ID startDate EndDate 

001 21/01/2013 20/02/2013 
002 24/01/2013 13/02/2013 

表2

ID DATE TIME STATUS 

001 21/01/2013 NULL ANNUAL 
001 22/01/2013 NULL 
001 23/01/2013 NULL 
001 24/01/2013 NULL Holiday (Sunday) 
001 25/01/2013 02:00 Present 

在表2中,我想显示状态为不存在,年假结束状态显示在系统中

1)年假后,系统显示为“不可用”,因为年假延长至可用时间行 2)假期也应显示为缺席,因为时间不可用。在表2

期望输出

ID DATE TIME STATUS 

001 21/01/2013 NULL ANNUAL 
001 22/01/2013 NULL Absent 
001 23/01/2013 NULL Absent 
001 24/01/2013 NULL Absent 
001 25/01/2013 02:00 Present 

如何使下列条件的查询

系统显示从表1和可用时间排annaul休假结束日期之间的缺席。需要查询帮助。

回答

0

这很难理解你的问题,但这有多接近?

SELECT 
T2.ID, T2.Date, T2.Time, 
CASE 
WHEN T2.Date = T1.startDate THEN 'Annual' 
WHEN T2.Date BETWEEN T1.startDate AND T2.endDate THEN 'Absent' 
END Status 
FROM 
Table2 T2 
LEFT OUTER JOIN 
Table1 T1 
ON T2.ID = T1.ID 
AND T2.Date BETWEEN T1.startDate AND T2.endDate 
WHERE T2.ID = '001' 
相关问题