oracle 数据遍历差计算问题
路遥迢 2017-05-16 11:45:52 例子数据
create table LEAD_TABLE
(
CASEID VARCHAR2(10),
STEPID VARCHAR2(10),
ACTIONDATE DATE
)
insert into LEAD_TABLE values('Case1','Step1',to_date('20161101','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case1','Step2',to_date('20161103','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case1','Step3',to_date('20161104','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case1','Step4',to_date('20161105','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case1','Step5',to_date('20161107','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case1','Step4',to_date('20161108','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case1','Step6',to_date('20161112','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case1','Step1',to_date('20161201','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case2','Step2',to_date('20161202','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case2','Step3',to_date('20161203','yyyy-mm-dd'));
insert into LEAD_TABLE values('Case2','Step3',to_date('20161205','yyyy-mm-dd'));
commit;
有个需求,我想算出以CASEID分组,ACTIONDATE 排序,并以各自分组第一条的ACTIONDATE 为时间基准,获得以后所有该分组时间差>=两天的数据
想要的结果如下,有没办法?
('Case1','Step1',to_date('20161101','yyyy-mm-dd'));基准,要
('Case1','Step2',to_date('20161103','yyyy-mm-dd')); 这条与上一条差2天,要
('Case1','Step3',to_date('20161104','yyyy-mm-dd'));这条与上一条差1天,不要
('Case1','Step4',to_date('20161105','yyyy-mm-dd'));这条与上一条差1天,,但与上上一条差2天,要
('Case1','Step5',to_date('20161107','yyyy-mm-dd')); 这条与上一条差2天,要
('Case1','Step4',to_date('20161108','yyyy-mm-dd'));这条与上一条差1天,不要
('Case1','Step6',to_date('20161112','yyyy-mm-dd'));这条与上上一条差5天,要
('Case1','Step1',to_date('20161201','yyyy-mm-dd'));这条与上上一条差18天,要
('Case2','Step2',to_date('20161202','yyyy-mm-dd'));基准,要
('Case2','Step3',to_date('20161203','yyyy-mm-dd'));这条与上一条差1天,不要
('Case2','Step3',to_date('20161205','yyyy-mm-dd'));这条与上一条差2天,,但与上上一条差3天,要