2013-07-30 79 views
-4

讓我解釋我有一份員工名單,說明他們實際工作的時間。我有另一張桌子給我這段時間的開始和結束日期。我想要一個查詢,將一天的工作,並認爲它落在時期SQL Server查找兩個日期之間的記錄

table 1 

David 05/10/2013 
Peter 05/16/2013 

table 2 
Period_Num   Begin_Period   End_Period 
Period 1   01/05/2013  05/15/2013 
Period 2   05/16/2013  12/31/2013 

我想最後看:

David  Period 1 
Peter  Period 2 

有沒有辦法在sql做到這一點特別在一個視圖?

謝謝!

+0

老實說,我有點失落,我是否需要使用子查詢或功能或案例聲明 – user2634667

回答

2

喜歡的東西

select t1.Name, t2.Period_Num 
from table1 as t1 
    left outer join table2 as t2 on t1.date between t2.Begin_Period and T2.End_Period 

你要小心,因爲如果在表2週期是重疊的,你的記錄可能會重複。例如,如果你的數據是:

table 1 

David 05/10/2013 
Peter 05/16/2013 

table 2 
Period_Num   Begin_Period   End_Period 
Period 1    01/05/2013   05/15/2013 
Period 2    05/16/2013   12/31/2013 
Period 3    03/08/2013   08/10/2013 

您會收到

David  Period 1 
Peter  Period 2 
David  Period 3 <- DUPLICATE 
+0

我明白,這是比我更容易做到這一點。謝謝。我在表2中有FK限制..您的謹慎不會發生。非常感謝。 – user2634667

0

試試這個

select Table1.Name,Table2.periodNum from Table1 join Table2 on Table1.period between Table2.Begin_Period and Table2.End_Period

0

爲了避免情況下,從表1失蹤名字裏有沒有相應的期在表2中,您可以嘗試如下所示:

select t1.Name, isnull(t2.Period_Num,'n/a') 
from table1 t1 
left outer join table2 t2 on t1.worked between t2.Begin_Period and t2.End_Period 
相關問題