一个sql很简单的求时间重叠数据的问题

davidleee davidleee 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个sql求时间重叠数据的问题:
表结构:
Name Type Nullable Default Comments
------------ -------- -------- ------- --------
ROOM_NBR INTEGER
ARRIVAL_DATE DATE
LEAVE_DATE DATE
GUEST_NAME CHAR(30) Y

表内数据:
ROOM_NBR ARRIVAL_DATE LEAVE_DATE GUEST_NAME
1 4/1/2010 4/2/2010 A
1 4/3/2010 4/4/2010 B
2 4/1/2010 4/3/2010 C
2 4/2/2010 4/4/2010 D

现在要求求出哪个房间存在时间重叠的
希望结果:
ROOM_NBR
2

我现在的sql是:
select a.room_nbr from test_hotel a where exists
(
select 1 from test_hotel b where
a.room_nbr=b.room_nbr and
(a.arrival_date<=b.leave_date or a.leave_date>=b.arrival_date)
)

但出来的结果是
1
1
2
2

请大家告诉我,我哪里写错了
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
davidleee
基础和管理 17,377 成员 95,111 内容