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)假期也应该显示为缺席,因为时间不可用。

在表 1 的年假结束日期和表 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

如何查询以下条件。需要查询帮助。

4

1 回答 1

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'
于 2013-03-11T05:24:45.960 回答