2015-11-02 37 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)