将两个表从第一个日期开始连接到第二个日期范围内

Blu*_*e16 5 sql sql-server join date intervals

我有两个如下表(日期格式:yyyy-MM-dd):
1)Table1 - EMPLOYEE_OVERTIMES(别名:EO)

EMPLOYEE_ID | OVERTIME_DATE
------------------------------------------------
1           | 2012-04-01
2           | 2012-08-14
3           | 2012-07-22
4           | 2012-10-30
5           | 2012-06-07
Run Code Online (Sandbox Code Playgroud)

2)表2 - EMPLOYEE_HOLIDAYS(别名:EH)

EMPLOYEE_ID | START_DATE | END_DATE   |
-----------------------------------------
1           | 2012-03-28 | 2012-04-10
2           | 2012-01-14 | 2012-01-30
3           | 2012-07-15 | 2012-07-25
4           | 2012-10-10 | 2012-10-13
5           | 2012-06-01 | 2012-06-07
Run Code Online (Sandbox Code Playgroud)

表 EMPLOYEE_OVERTIMES 和 EMPLOYEE_HOLIDAYS 是从其他表联接的。我想查找满足以下条件的所有记录:EH.START_DATE <= EO.OVERTIME_DATE <= EH.END_DATE

3)结果表

EMPLOYEE_ID | START_DATE | END_DATE   | OVERTIME_DATE
-------------------------------------------------------
1           | 2012-03-28 | 2012-04-10 | 2012-04-01
3           | 2012-07-15 | 2012-07-25 | 2012-07-22
5           | 2012-06-01 | 2012-06-07 | 2012-06-07
Run Code Online (Sandbox Code Playgroud)

val*_*lex 2

SQLFiddle 演示

SELECT EH.*, EO.OVERTIME_DATE 
FROM EMPLOYEE_HOLIDAYS EH
JOIN EMPLOYEE_OVERTIMES EO
ON (EO.EMPLOYEE_ID = EH.EMPLOYEE_ID) AND 
   (EO.OVERTIME_DATE BETWEEN EH.START_DATE AND EH.END_DATE)
Run Code Online (Sandbox Code Playgroud)