联接查询日期范围

Tas*_*que 1 sql database sql-server sql-server-2008

嗨,
我有下表

=========================
Periods
=========================
PeriodID  StartDate   EndDate
1         01-01-11    07-01-11
2         08-01-11    15-01-11
Run Code Online (Sandbox Code Playgroud)

全年等等

=========================
History
=========================
PersonID  From       To
1         01-01-11  05-04-11
2         17-06-11   NULL 
and so on
Run Code Online (Sandbox Code Playgroud)

我想要以下输出

 StartDate   EndDate   PersonID
  01-01-11    07-01-11    1
  08-01-11    15-01-11    1
  .
  .
  15-04-11   21-04-11     NULL
  .
  .
  15-06-11   21-06-11     2
Run Code Online (Sandbox Code Playgroud)

我需要在这两个表之间进行联接,但是我无法弄清楚联接条件的样子

拉加兹

And*_*y M 5

SELECT
  p.StartDate,
  p.EndDate,
  h.PersonID
FROM Periods p
  LEFT JOIN History h
    ON h.[From] BETWEEN p.StartDate AND p.EndDate OR
       p.StartDate BETWEEN h.[From] AND ISNULL(h.[To], '30000101')
Run Code Online (Sandbox Code Playgroud)