SQL通过匹配日期到日期范围来选择值?

时间:2012-09-06 19:38:50

标签: sql date range

我有一个时间表表和一个包含日期范围的部门表,并希望将正确的部门附加到每个时间表条目。

Timesheet                        Department
----------------------           --------------------------------------
Name  |Date     |Hours           Name   |From     |To        |Dept
----------------------           --------------------------------------
Joe   |6/1/2012 | 4              Joe    |5/1/2012 |7/31/2012 |West
Joe   |7/8/2012 | 2              Joe    |8/1/2012 |1/1/2099  |East
Joe   |8/4/2012 | 8

查询时间表数据时,我希望附上时间表日的正确部门。查询应该输出:

Joe   |6/1/2012 | 4 |West
Joe   |7/8/2012 | 2 |West
Joe   |8/4/2012 | 8 |East

我很难理解如何加入这些不同的数据集来实现我的目标。如果我没有可以加入的完全匹配日期但只是日期范围,我如何为每个时间表条目选择正确的Dept值?

1 个答案:

答案 0 :(得分:3)

SELECT
    t.Name,
    t.[Date],
    t.Hours,
    d.Dept
FROM
    Timesheet t
    JOIN Department d
        ON t.Name = d.Name
        AND t.[Date] BETWEEN d.[From] AND d.To