SQL Server 2000
表1
ID Date Workedtime
001 23-02-2009 08:00:00
001 24-02-2009 15:00:00
001 25-02-2009 17:00:00
002 ...
所以......,
表2
ID FromDate ToDate
001 24-02-2009 25-02-2009
002 27-02-2009 03-03-2009
...
我想将table1的日期和ID与Table2 ID FromDate,ToDate进行比较,意思是 表1与FromDate ToDate的日期比较,如果日期介于fromdate和todate之间,则工作时间应显示为不存在。
预期产出
ID Date Workedtime
001 23-02-2009 08:00:00
001 24-02-2009 absent
001 25-02-2009 absent
002 ...
需要查询帮助
答案 0 :(得分:2)
这应该有助于您在上面指定的内容
DECLARE @Table1 TABLE(
ID VARCHAR(10),
Date DATETIME,
Workedtime VARCHAR(10)
)
INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '23 Feb 2009', '08:00:00'
INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '24 Feb 2009', '15:00:00'
INSERT INTO @Table1 (ID,Date,Workedtime) SELECT '001', '25 Feb 2009', '17:00:00'
DECLARE @Table2 TABLE(
ID VARCHAR(10),
FromDate DATETIME,
ToDate DATETIME
)
INSERT INTO @Table2 (ID,FromDate,ToDate) SELECT '001', '24 Feb 2009', ' 25 Feb 2009'
SELECT t1.ID,
t1.Date,
CASE WHEN t2.ID IS NULL THEN t1.Workedtime ELSE 'absent' END Workedtime
FROM @Table1 t1 LEFT JOIN
@Table2 t2 ON t1.ID = t2.ID
AND t1.Date BETWEEN t2.FromDate AND t2.ToDate