连续年份判断

连续年份判断

–存在不连续投保年份的被保险人
create table tmp_wrh_no_insuredcode as
select distinct tt.insuredcode from (
select mmmm.,
(case
when mmmm.aa is null then
1 --起始第一条记录标识
else
mmmm.startdate_yyyy - mmmm.aa
end) flag --后一条记录年份减前一条记录年份
from (select mmm.
,
lag(mmm.startdate_yyyy) over(partition by mmm.insuredcode order by mmm.startdate_yyyy) aa --前一条记录的年份
from (select mm.insuredcode,
substr(to_char(mm.startdate, ‘yyyymmdd’), 1, 4) startdate_yyyy
from (select *
from tmp_wrh_fc_customeridv2
union all
select *
from tmp_wrh_car_customeridv2) mm
group by mm.insuredcode,
substr(to_char(mm.startdate, ‘yyyymmdd’), 1, 4)
order by mm.insuredcode,
substr(to_char(mm.startdate, ‘yyyymmdd’), 1, 4)) mmm) mmmm
) tt where tt.flag <> 1 --存在不连续年份的被保险人
;

连续年份判断_第1张图片

你可能感兴趣的:(oracle)