人员任职期间检查冲突

利用oracle提供的lead、lag 函数来查询已有记录的上一条、下一条记录
lag(enddate,1,date’1999-09-09’)

LAG(EXP_STR,OFFSET,DEFVAL)OVER()
LEAD(EXP_STR,OFFSET,DEFVAL)OVER()
EXP_STR:要取的列
OFFSET: 取偏移后的第几行数据
DEFVAL:没有符合条件的默认值

取出上一条的结束日期与当前的开始日期进行比较,如果结束日期与当前日期有交叠,则为冲突。
SELECT * FROM (
select pid, sp.Psnname,sp.Upbid,sp.Updid,sp.startdate,sp.enddate ,lag(enddate,1,null)over (partition by pid order by startdate) as pior from sl_person sp where sp.Channel in (‘3’,‘4’,‘10’,‘11’,‘98’) ) where pior > startdate

发布了37 篇原创文章 · 获赞 2 · 访问量 3236

猜你喜欢

转载自blog.csdn.net/paocai_2019/article/details/100733885