2015-11-02 38 views
0

我有這樣多行標準選擇記錄在SQL Server

ID   Day Start End 
----------- ---- ----- ----- 
1   M 7:30 9:30 
2   T 7:30 11:30 
3   T 12:30 14:30 

一個表,這樣

Day Start End 
---- ----- ----- 
M 8:30 11:30 
T 8:30 10:30 

我想從第一個表中的所有記錄,是基於另一個表從第二張桌子。

示例結果:

ID   Day Start End 
----------- ---- ----- ----- 
1   M 7:30 9:30 
2   T 7:30 11:30 

結果是類似的,因爲第一個2條記錄在第一表匹配從所述第二表格中的標準。第一排和第二排有同一天,時間與另一排發生衝突。

+0

的算什麼數據類型'Start'和'End'的? –

+0

應該是varchar – delbertwah

+0

而sql-server版本是? –

回答

1

這個連接將工作:

select * 
from t1 
join t2 on t1.day = t2.day and t1.end >= t2.start and t1.start <= t2.end 

如果時間列是你需要轉換爲timevarchars

select * 
from t1 
join t2 on t1.day = t2.day and 
      cast(t1.end as time) >= cast(t2.start as time) and 
      cast(t1.start as time) <= cast(t2.end as time)