上面这些是每天对房间的预约(已经预定)

表1   
ID    时间开始  时间结束        房间
1     10:00     11:00            A
2     12:00     13:15            A
3     11:00    11:30            B
上面这些是每天对房间的预约(已经预定)
现在求 房间A的每天的空闲时间段
时间开始  时间结束        房间
00:00    10:00          A
11:00    12:00          A
13:15    00:00          A
00: 00    11: 00          B
11: 30    00: 00          B

 

--建立測試環境
Create Table TEST   
(ID Int,
时间开始 Varchar(5),
时间结束 Varchar(5),
房间  Varchar(1))
Insert TEST Select 1,     '10:00',     '11:00',            'A'
Union All Select 2,     '12:00',     '13:15',            'A'
Union All Select 3,     '11:00',     '11:30',            'B'
--測試
Select
'00:00' As 时间开始,
Min(时间开始) As 时间结束,
房间
From TEST
Group By 房间
Union All
Select * From(
Select
时间结束 As 时间开始,
(Select TOP 1 时间开始 From TEST Where ID>A.ID And 房间=A.房间 Order By 时间开始) As 时间结束 ,
房间
From TEST A) B
Where 时间结束 Is Not Null
Union All
Select
Max(时间结束),
'00:00',
房间
From TEST
Group By 房间
Order By 房间,时间开始
--刪除測試環境
Drop Table TEST
--結果
/*
时间开始 时间结束 房间
00:00 10:00 A
11:00 12:00 A
13:15 00:00 A
00:00 11:00 B
11:30 00:00 B
*/

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值