Tested in CONV:
create global temporary table tmp_drew_clean_students
on commit preserve rows
as
select distinct sgbstdn_pidm, sgbstdn_term_code_eff
from sgbstdn a
where sgbstdn_stst_code = 'AS'
and a.sgbstdn_term_code_eff = (select max(b.sgbstdn_term_code_eff)
from sgbstdn b
join stvterm
on b.sgbstdn_term_code_eff = stvterm_code
where stvterm_start_date <= sysdate
and b.sgbstdn_pidm = a.sgbstdn_pidm)
and (select max(shrttrm_term_code)
from shrttrm
where shrttrm_pidm = sgbstdn_pidm) <= '201110'
and sgbstdn_term_code_eff <= '201110';
insert into tmp_drew_clean_students
select distinct sgbstdn_pidm, sgbstdn_term_code_eff
from sgbstdn a
where sgbstdn_stst_code = 'AS'
and a.sgbstdn_term_code_eff = (select max(b.sgbstdn_term_code_eff)
from sgbstdn b
join stvterm
on b.sgbstdn_term_code_eff = stvterm_code
where stvterm_start_date <= sysdate
and b.sgbstdn_pidm = a.sgbstdn_pidm)
and sgbstdn_pidm not in (select shrttrm_pidm from shrttrm)
and sgbstdn_term_code_eff <= '201110';
commit;
select count(distinct sgbstdn_pidm) from tmp_drew_clean_students;
select * from tmp_drew_clean_students;
create global temporary table tmp_clean_sgbstdns
on commit preserve rows
as
select *
from sgbstdn a
where exists (select 1
from tmp_drew_clean_students b
where a.sgbstdn_pidm = b.sgbstdn_pidm
and a.sgbstdn_term_code_eff = b.sgbstdn_term_code_eff);
select * from tmp_clean_sgbstdns;
update tmp_clean_sgbstdns
set sgbstdn_stst_code = 'WD',
sgbstdn_leav_code = 'L',
sgbstdn_leav_from_date = sysdate,
sgbstdn_leav_to_date = '31-DEC-2099',
sgbstdn_data_origin = 'AutoReg',
sgbstdn_user_id = 'CLEANUP',
sgbstdn_term_code_eff = '201210';
insert into sgbstdn
select * from tmp_clean_sgbstdns;
commit;
For LOA:
create global temporary table tmp_drew_clean_loa
on commit preserve rows
as
select distinct sgbstdn_pidm, sgbstdn_term_code_eff
from sgbstdn a
where sgbstdn_stst_code = 'LA'
and a.sgbstdn_term_code_eff = (select max(b.sgbstdn_term_code_eff)
from sgbstdn b
join stvterm
on b.sgbstdn_term_code_eff = stvterm_code
where stvterm_start_date <= sysdate
and b.sgbstdn_pidm = a.sgbstdn_pidm)
and sgbstdn_term_code_eff <= '201030'
and (sgbstdn_leav_to_date is null or sgbstdn_leav_to_date <= sysdate);
commit;
create global temporary table tmp_clean_sgbstdns_loa
on commit preserve rows
as
select *
from sgbstdn a
where exists (select 1
from tmp_drew_clean_loa b
where a.sgbstdn_pidm = b.sgbstdn_pidm
and a.sgbstdn_term_code_eff = b.sgbstdn_term_code_eff);
commit;
update tmp_clean_sgbstdns_loa
set sgbstdn_stst_code = 'WD',
sgbstdn_leav_code = 'L',
sgbstdn_leav_from_date = sysdate,
sgbstdn_leav_to_date = '31-DEC-2099',
sgbstdn_data_origin = 'AutoReg',
sgbstdn_user_id = 'CLEANUP_LOA',
sgbstdn_term_code_eff = '201210';
commit;
insert into sgbstdn
select * from tmp_clean_sgbstdns_loa;
commit;