2012-09-06 124 views
1

我有一個時間表和部門表與日期範圍,並希望將正確的部門附加到每個時間表條目。SQL通過匹配日期到日期範圍來選擇值?

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

我希望你真的有一個表的主鍵,不必加入名字 – LittleBobbyTables

回答

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 
+0

哇,這很快,它的作品就像一個魅力。非常感謝!對於我成爲這樣的新秀感到抱歉;-) – MarcoK