--Freemarker Template SELECT nr, bw_sb_stat_nr, wert, name FROM costage_bw_sb_status_werte ; <#assign bw_stati = [ {"kb":"vss", "nr":20,"name":"Formale Zulassungsvoraussetzungen"}, {"kb":"dok", "nr":30,"name":"Bewerbungsunterlagen"}, {"kb":"zul", "nr":40,"name":"Zulassung"}, {"kb":"stpl", "nr":50,"name":"Studienplatzangebot"}, {"kb":"qvss", "nr":60,"name":"Fachliche Zulassungsvoraussetzungen"}, {"kb":"abgabe", "nr":80,"name":"Bewerbungsabgabe"}, {"kb":"evs", "nr":90,"name":"Einschreibungsvoraussetzungen"} ] /> SELECT B.nr, B.st_studstamm_nr, B.st_sem_nr, B.st_studiengang_nr, B.st_studfrm_nr, B.bw_sb_svor_nr, B.bw_zul_art_nr, B.bw_typ_kb, B.zurueckgezogen_am, B.fristbeginn, B.fristende, B.einstiegs_fachsemester, B.fachsemester_gewaehlt, B.abgeschickt_datum, E.semester_tid as semester, S.matrikelnummer, <#foreach bw_status in bw_stati> null::char(1) as status_${bw_status.kb} , null::char(1) as status_msg_${bw_status.kb} , null::char(10) as stufrm, null::char(10) as unikey, null::integer as studiengang_nr, null::integer as fach_nr, null::integer as st_studiengang_nr_msg, null::integer as bw_bewerbng_nr_msg, null::char(10) as bew_kz, null::char(10) as zul_kz, null::char(10) as annahme_kz, null::char(10) as einschreib_kz, null::CHAR(10) as hzb_art , null::DATE as hzb_datum , null::FLOAT as hzb_note , null::INTEGER as hzb_ort , null::INTEGER as hzb_staat , null::INTEGER as hzb_st_land_nr into temp tmp_bew FROM costage_st_semester E, costage_bw_bewerbungen B left outer join costage_st_studierendenstammdaten S on (B.st_studstamm_nr=S.st_studstamm_nr) where E.st_sem_nr=B.st_sem_nr --and B.bw_typ_kb not in ('MBW') --keine Mehrfachbewerbung --and B.st_studstamm_nr=1186303 and E.semester_tid >= ${beginn_semester} ; --klappt nicht weil nicht eindeutig: -- update tmp_bew set bw_bewerbng_nr_msg=K.bw_bewrbng_nr -- from costage_bw_bewerbung_kombination K -- where K.bw_bewrbng_nr_teil=tmp_bew.nr -- and tmp_bew.bw_typ_kb='TBW' -- ; -- update tmp_bew set st_studiengang_nr_msg=B.st_studiengang_nr -- from costage_bw_bewerbungen B -- where B.nr=tmp_bew.bw_bewerbng_nr_msg -- and tmp_bew.bw_typ_kb='TBW' -- ; update tmp_bew set unikey=K.unikey from costage_st_studiengaenge G, costage_st_studienkennzahlen K where G.st_studiengang_nr=tmp_bew.st_studiengang_nr and K.st_skz_nr=G.st_skz_nr ; update tmp_bew set stufrm=F.statistik_code from costage_st_studienformen F where F.nr=tmp_bew.st_studfrm_nr ; <#foreach bw_status in bw_stati> <#foreach wert in status_werte> <#if bw_status.nr == wert.bw_sb_stat_nr> -- update tmp_bew set status_${bw_status.kb}=S.wert -- from costage_bw_bewerb_sb_status S -- where tmp_bew.nr=S.bw_bewerbng_nr -- and S.bw_sb_stat_nr =${bw_status.nr} -- ; update tmp_bew set status_${bw_status.kb}='${wert.wert}' where exists (select S.bw_bewerbng_nr from costage_bw_bewerb_sb_status S where tmp_bew.nr=S.bw_bewerbng_nr and S.bw_sb_stat_nr =${bw_status.nr} and S.wert='${wert.wert}') ; -- update tmp_bew set status_msg_${bw_status.kb}=S.wert -- from costage_bw_bewerb_sb_status S -- where tmp_bew.bw_bewerbng_nr_msg=S.bw_bewerbng_nr -- and S.bw_sb_stat_nr =${bw_status.nr} -- ; --Zum Zeitpunkt der Einschreibung/Annahme muss der Status aus dem MSG kommen. --Die Zuordnung zum MSG ist aber nicht eindeutig. Beispiel Testfall hat in dem TSG Philosophie --zwei mögliche MBW-Kombinationen. Daher mit exists abfragen, ob mind. ein MBW den jew. Status=J hat: update tmp_bew set status_msg_${bw_status.kb}='${wert.wert}' where exists (select S.bw_bewerbng_nr from costage_bw_bewerb_sb_status S, costage_bw_bewerbung_kombination K where bw_bewrbng_nr_teil=tmp_bew.nr and K.bw_bewrbng_nr=S.bw_bewerbng_nr and S.bw_sb_stat_nr =${bw_status.nr} and S.wert='${wert.wert}') and bw_typ_kb='TBW' ; -- update tmp_bew set status_msg_${bw_status.kb}='J' -- where exists (select S.bw_bewerbng_nr -- from costage_bw_bewerb_sb_status S -- where tmp_bew.bw_bewerbng_nr_msg=S.bw_bewerbng_nr -- and S.bw_sb_stat_nr =${bw_status.nr} -- and S.wert='J') -- ; update tmp_bew set bew_kz='J' where status_vss='J'; ; update tmp_bew set zul_kz='J' where status_zul='J'; ; --beim MSG annahme_kz/einschreib_kz noch runterschreiben auf TSG update tmp_bew set status_stpl='J' where status_msg_stpl='J'; update tmp_bew set status_evs='J' where status_msg_evs='J'; update tmp_bew set annahme_kz='J' where status_stpl='J' ; update tmp_bew set einschreib_kz='J' where status_evs='J' ; --TODO: update tmp_bew set hzb_art=H.hzb_art_stla_code, hzb_datum=H.zeugnisdatum, hzb_note=H.hzb_note, hzb_ort=H.land_sub_r_nr, hzb_st_land_nr=H.land_nr from costage_bw_bewerb_hzb H, costage_bw_bewerbungen BW where tmp_bew.st_studstamm_nr = BW.st_studstamm_nr and BW.nr=H.bw_bewrbng_nr ; update tmp_bew set hzb_staat=val(L.statistik_code) from costage_st_laender L where L.st_land_nr=tmp_bew.hzb_st_land_nr ; delete from costage_bw_antr_aggr where semester >= ${beginn_semester} ; insert into costage_bw_antr_aggr( nr, st_studstamm_nr, matrikelnummer, semester, st_studiengang_nr, st_studiengang_nr_msg, bw_bewerbng_nr_msg, unikey, studiengang_nr, fach_nr, fachsemester, stufrm, bw_sb_svor_nr, bw_zul_art_nr, bw_typ_kb, <#foreach bw_status in bw_stati> status_${bw_status.kb}, bew_kz, zul_kz, annahme_kz, einschreib_kz, hzb_art, hzb_datum, hzb_note, hzb_ort, hzb_staat, summe ) SELECT nr, st_studstamm_nr, val(matrikelnummer), semester, st_studiengang_nr, st_studiengang_nr_msg, bw_bewerbng_nr_msg, unikey, studiengang_nr, fach_nr, einstiegs_fachsemester as fachsemester, stufrm, bw_sb_svor_nr, bw_zul_art_nr, bw_typ_kb, <#foreach bw_status in bw_stati> status_${bw_status.kb}, bew_kz, zul_kz, annahme_kz, einschreib_kz, hzb_art, hzb_datum, hzb_note, hzb_ort, hzb_staat, count(*) from tmp_bew group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31; drop table tmp_bew;