表示看不懂你的需求,叙述一个需求怎么这么难
比如说数据是:001262,事假,2016-11-14 08:00,2016-11-15 15:00
001262,事假,2016-11-15 14:00,2016-11-15 17:00
你看两条数据的请假时间段有重合,就是找请假有重复的记录,每个工号在同一个月内不允许有重复的,想请教sql怎么批量找出这些记录
是要查出哪些人请的事件时间有重复的?比如上面例子说的001262 11-15 15:00结束和11-15 1400开始,这种有重复的时间段的数据是吧?
select distinct a.工号 from (
select row_number() over( order by 工号) as rowid,* from tb
) a where exists
(
select 1 from (select row_number() over( order by 工号) as rowid,* from tb) b where
a.工号=b.工号 and
(a.开始时间<b.结束时间 and a.结束时间>b.开始时间 and a.rowid <> b.rowid)
)
select row_number() over( order by 工号) as rowid,* from tb