2009-10-09 5 views
-2

Можно создать дубликат:
Value should be 0 between the two dates?Дата сравнения двух дат?

SQL Server 2000

TABLE1

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 ... 

Так на ..,

Table2

ID FromDate ToDate 

001 24-02-2009 25-02-2009 
002 27-02-2009 03-03-2009 

...

Я хочу, чтобы сравнить даты table1 и ID с Table2 ID FromDate, Todate означает Table1 Дата сравнения с 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 ... 

Нужна Query Помощь

+2

Он несколько из этих Х-) –

+3

Я так думаю написал половина системы расписания до сих пор. – Andrew

ответ

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 
Смежные вопросы