Code Bye

求设计SQL语句

SQL Server数据库
2张表
表A
3个字段 NAME 类型为VARCHAR,START_TIME和STOP_TIME类型都为TIME
NAME      |     START_TIME      |       STOP_TIME
A               |      08:00               |             16:00
B               |      16:00               |             00:00
C               |      00:00               |             08:00
表B
2个字段  NAME 类型为VARCHAR, CREATION_TIME 类型为DATETIME
NAME      |     CREATION_TIME
test          |   2016-08-24 10:19:26.217
test2        |   2016-08-25 17:28:27.105
test3        |   2016-08-25 18:21:17.216
test4        |   2016-08-26 07:05:10.056
现在要求做一张视图, 查询表B的NAME 字段和 表A的 NAME 字段, 但是 关联信息是 表B 的CREATION_TIME 字段 在表A 的 START_TIME和STOP_TIME范围内 根据范围不同 查询不同的 A.NAME
查询结果应为:
B.NAME        |        A.NAME
test                |          A
test2              |          B
test3              |          B
test4              |          C
解决方案

40

select B.Name,A.Name from 表A A,
(select Name, convert(char(8),creation_time,108) as createTime from 表B) B
where  B.createTime between  convert(char(8),A.Start_Time,108) and convert(char(8),A.Stop_Time,108)        

这样子行吗?不过你的StopTIme有比StartTime小的,这样子的表真的没问题吗?00点与24点可是不一样啊


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求设计SQL语句