|
|
|
--freemarker template
|
|
|
|
<sqlvars>
|
|
|
|
<sqlvar name="beginn_semester"><![CDATA[
|
|
|
|
select param_val from unload_params
|
|
|
|
where param_id='COSTAGE_start_leistungen_sem';
|
|
|
|
]]>
|
|
|
|
</sqlvar>
|
|
|
|
</sqlvars>
|
|
|
|
|
|
|
|
|
|
|
|
--Leistungen mit Veranstaltung -> Semester:
|
|
|
|
SELECT
|
|
|
|
L.st_studium_nr,
|
|
|
|
S.st_studstamm_nr,
|
|
|
|
val(L.matrikelnummer) as matrikelnummer,
|
|
|
|
null::integer as st_studiengang_nr,
|
|
|
|
null::integer as studiengang_nr,
|
|
|
|
null::integer as fach_nr,
|
|
|
|
null::integer as st_studienstatus_nr,
|
|
|
|
null::integer as semester,
|
|
|
|
E.semester_tid as semester_veranst,
|
|
|
|
null::integer as fachsemester,
|
|
|
|
null::varchar(255) as unikey,
|
|
|
|
L.leistung_nr,
|
|
|
|
L.leistungstyp_nr,
|
|
|
|
L.leistungsdetailtyp_kb,
|
|
|
|
L.studienidentifikator,
|
|
|
|
L.spov_abschluss,
|
|
|
|
L.stp_sp_nr,
|
|
|
|
L.veranstaltung_nummer,
|
|
|
|
L.veranstaltung_semester,
|
|
|
|
L.veranstaltung_titel,
|
|
|
|
L.veranstaltung_art,
|
|
|
|
L.semesterstunden,
|
|
|
|
L.unterrichtseinheiten,
|
|
|
|
L.thema_individuell,
|
|
|
|
L.pv_notenskala_nr,
|
|
|
|
L.note,
|
|
|
|
L.note_name,
|
|
|
|
L.note_zahl,
|
|
|
|
L.pv_pruef_zusatz_typen_nr,
|
|
|
|
L.note_zusatz,
|
|
|
|
L.note_zusatz_name,
|
|
|
|
L.note_positiv_flag,
|
|
|
|
L.note_negativ_flag,
|
|
|
|
L.pv_notenskala_typ_nr,
|
|
|
|
L.pv_notenskala_typ_kb,
|
|
|
|
L.pv_notenskala_typ_name,
|
|
|
|
L.credits,
|
|
|
|
date(L.leistungsdatum) as leistungsdatum,
|
|
|
|
L.anerkannt_flag,
|
|
|
|
L.zusatzleistung_flag,
|
|
|
|
L.leistungsstatus_nr,
|
|
|
|
L.leistungsstatus_map_kb,
|
|
|
|
2::integer as abschnitt, --provisorisch erstmal nur Hauptprüfungen
|
|
|
|
null::integer as pnr,
|
|
|
|
null::integer as leistung_nr_msg,
|
|
|
|
null::integer as st_studiengang_nr_msg,
|
|
|
|
null::date as leistungsdatum_msg,
|
|
|
|
null::integer as semester_msg,
|
|
|
|
null::char(10) as po_stp_stp_version_kb
|
|
|
|
into temp tmp_pruef
|
|
|
|
FROM costage_st_semester E, costage_leistungen_typen T, costage_leistungen L, costage_st_studierendenstammdaten S
|
|
|
|
where E.semester_id=L.veranstaltung_semester
|
|
|
|
and T.leistungstyp_nr=L.leistungstyp_nr
|
|
|
|
and S.matrikelnummer::varchar(255)=L.matrikelnummer
|
|
|
|
-- TSAB/AB:
|
|
|
|
and T.kurzbezeichnung in ('AP','AAP') --Abschlussprüfung/Anerkannte Abschlussprüfung
|
|
|
|
and L.leistungsstatus_nr in (4,2) --Letztgültig/Final/gültige Leistung
|
|
|
|
--px_leistungen_status_typen_v:
|
|
|
|
--4^F^Letztgültig^Final^
|
|
|
|
--1^P^in Bearbeitung^in process^
|
|
|
|
--2^V^gültige Leistung^valid^
|
|
|
|
--3^I^ungültige Leistung^invalid^
|
|
|
|
--5^D^gelöscht^deleted^
|
|
|
|
and E.semester_tid >= ${beginn_semester}
|
|
|
|
;
|
|
|
|
|
|
|
|
--Leistungen ohne Veranstaltungssemester gehen über Prüfungsdatum:
|
|
|
|
insert into tmp_pruef
|
|
|
|
SELECT
|
|
|
|
L.st_studium_nr,
|
|
|
|
S.st_studstamm_nr,
|
|
|
|
val(L.matrikelnummer) as matrikelnummer,
|
|
|
|
null::integer as st_studiengang_nr,
|
|
|
|
null::integer as studiengang_nr,
|
|
|
|
null::integer as fach_nr,
|
|
|
|
null::integer as st_studienstatus_nr,
|
|
|
|
E.semester_tid as semester,
|
|
|
|
null::integer as semester_veranst,
|
|
|
|
null::integer as fachsemester,
|
|
|
|
null::varchar(255) as unikey,
|
|
|
|
L.leistung_nr,
|
|
|
|
L.leistungstyp_nr,
|
|
|
|
L.leistungsdetailtyp_kb,
|
|
|
|
L.studienidentifikator,
|
|
|
|
L.spov_abschluss,
|
|
|
|
L.stp_sp_nr,
|
|
|
|
L.veranstaltung_nummer,
|
|
|
|
L.veranstaltung_semester,
|
|
|
|
L.veranstaltung_titel,
|
|
|
|
L.veranstaltung_art,
|
|
|
|
L.semesterstunden,
|
|
|
|
L.unterrichtseinheiten,
|
|
|
|
L.thema_individuell,
|
|
|
|
L.pv_notenskala_nr,
|
|
|
|
L.note,
|
|
|
|
L.note_name,
|
|
|
|
L.note_zahl,
|
|
|
|
L.pv_pruef_zusatz_typen_nr,
|
|
|
|
L.note_zusatz,
|
|
|
|
L.note_zusatz_name,
|
|
|
|
L.note_positiv_flag,
|
|
|
|
L.note_negativ_flag,
|
|
|
|
L.pv_notenskala_typ_nr,
|
|
|
|
L.pv_notenskala_typ_kb,
|
|
|
|
L.pv_notenskala_typ_name,
|
|
|
|
L.credits,
|
|
|
|
date(L.leistungsdatum) as leistungsdatum,
|
|
|
|
L.anerkannt_flag,
|
|
|
|
L.zusatzleistung_flag,
|
|
|
|
L.leistungsstatus_nr,
|
|
|
|
L.leistungsstatus_map_kb,
|
|
|
|
2::integer as abschnitt, --provisorisch erstmal nur Hauptprüfungen
|
|
|
|
null::integer as pnr,
|
|
|
|
null::integer as leistung_nr_msg,
|
|
|
|
null::integer as st_studiengang_nr_msg,
|
|
|
|
null::date as leistungsdatum_msg,
|
|
|
|
null::integer as semester_msg
|
|
|
|
FROM costage_st_semester E, costage_leistungen_typen T, costage_leistungen L, costage_st_studierendenstammdaten S
|
|
|
|
where L.leistungsdatum between E.semester_anfang and E.semester_ende
|
|
|
|
and L.veranstaltung_semester is null
|
|
|
|
and T.leistungstyp_nr=L.leistungstyp_nr
|
|
|
|
and S.matrikelnummer::varchar(255)=L.matrikelnummer
|
|
|
|
-- TSAB/AB:
|
|
|
|
and T.kurzbezeichnung in ('AP','AAP') --Abschlussprüfung/Anerkannte Abschlussprüfung
|
|
|
|
and L.leistungsstatus_nr in (4,2) --Letztgültig/Final/gültige Leistung
|
|
|
|
and E.semester_tid >= ${beginn_semester}
|
|
|
|
;
|
|
|
|
|
|
|
|
update tmp_pruef set semester=E.semester_tid
|
|
|
|
FROM costage_st_semester E
|
|
|
|
where tmp_pruef.leistungsdatum between E.semester_anfang and E.semester_ende
|
|
|
|
and tmp_pruef.semester is null;
|
|
|
|
update tmp_pruef set semester_veranst=semester
|
|
|
|
where semester_veranst is null;
|
|
|
|
|
|
|
|
update tmp_pruef set st_studiengang_nr=S.st_studiengang_nr
|
|
|
|
from costage_st_studien S
|
|
|
|
where S.st_studium_nr=tmp_pruef.st_studium_nr
|
|
|
|
and S.st_studstamm_nr=tmp_pruef.st_studstamm_nr
|
|
|
|
;
|
|
|
|
--Fachsemester bei TSAB aus Sem. des Prüfungsdatums holen:
|
|
|
|
update tmp_pruef set
|
|
|
|
fachsemester = S.fachsemester
|
|
|
|
from costage_st_studien_aggr S
|
|
|
|
where S.semester=tmp_pruef.semester
|
|
|
|
and S.st_studium_nr=tmp_pruef.st_studium_nr
|
|
|
|
and S.matrikelnummer=tmp_pruef.matrikelnummer
|
|
|
|
and tmp_pruef.leistungsdetailtyp_kb='TSAB'
|
|
|
|
;
|
|
|
|
|
|
|
|
--Prüfung kann nach letztem eingeschr. Semester sein, daher zuerst letztes Sem. ermitteln:
|
|
|
|
select S.st_studium_nr,
|
|
|
|
S.matrikelnummer,
|
|
|
|
null::integer as st_studienstatus_nr,
|
|
|
|
null::integer as studiengang_nr,
|
|
|
|
null::integer as fach_nr,
|
|
|
|
null::char(10) as unikey,
|
|
|
|
null::integer as st_studiengang_nr_msg,
|
|
|
|
max(S.semester) as semester
|
|
|
|
into temp tmp_max_sem
|
|
|
|
from costage_st_studien_aggr S, tmp_pruef P
|
|
|
|
where S.st_studium_nr=P.st_studium_nr
|
|
|
|
and S.matrikelnummer=P.matrikelnummer
|
|
|
|
group by 1,2
|
|
|
|
;
|
|
|
|
--Dann Studium vom letzten Semester in den Prüfungs-Datensatz schreiben:
|
|
|
|
update tmp_pruef set
|
|
|
|
st_studienstatus_nr=S.st_studienstatus_nr,
|
|
|
|
--fachsemester = S.fachsemester, --wird oben ermittelt, ab 0.6 nicht mehr aus letztem Studiums-Semester
|
|
|
|
studiengang_nr=S.studiengang_nr,
|
|
|
|
fach_nr=S.fach_nr,
|
|
|
|
unikey=S.unikey,
|
|
|
|
st_studiengang_nr_msg=S.st_studiengang_nr_msg,
|
|
|
|
po_stp_stp_version_kb=S.po_stp_stp_version_kb
|
|
|
|
from tmp_max_sem M, costage_st_studien_aggr S
|
|
|
|
where S.matrikelnummer=M.matrikelnummer
|
|
|
|
and S.st_studium_nr=M.st_studium_nr
|
|
|
|
and S.semester=M.semester
|
|
|
|
and S.st_studium_nr=tmp_pruef.st_studium_nr
|
|
|
|
and S.matrikelnummer=tmp_pruef.matrikelnummer
|
|
|
|
;
|
|
|
|
|
|
|
|
drop table tmp_max_sem;
|
|
|
|
|
|
|
|
--MSG-Daten nachladen:
|
|
|
|
--zuerst Kopie nur mit MSG:
|
|
|
|
select * into temp tmp_pruef2
|
|
|
|
from tmp_pruef
|
|
|
|
where leistungsdetailtyp_kb !='TSAB'
|
|
|
|
;
|
|
|
|
|
|
|
|
--Dann Nr., Datum und Semster des MSG nachladen (TODO: ggf. noch Fachsemester?)
|
|
|
|
update tmp_pruef set leistung_nr_msg=T.leistung_nr,
|
|
|
|
leistungsdatum_msg=T.leistungsdatum,
|
|
|
|
semester_msg=T.semester
|
|
|
|
from tmp_pruef2 T
|
|
|
|
where tmp_pruef.st_studiengang_nr_msg=T.st_studiengang_nr
|
|
|
|
and tmp_pruef.leistungsdetailtyp_kb ='TSAB'
|
|
|
|
and T.matrikelnummer=tmp_pruef.matrikelnummer
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
--Leistungsdatum determiniert Semester auch bei MSG:
|
|
|
|
-- update tmp_pruef set semester=E.semester_tid
|
|
|
|
-- FROM costage_st_semester E
|
|
|
|
-- where tmp_pruef.leistungsdatum_msg between E.semester_anfang and E.semester_ende
|
|
|
|
-- and tmp_pruef.leistungsdetailtyp_kb !='TSAB'
|
|
|
|
-- and tmp_pruef.leistungsdatum_msg is not null;
|
|
|
|
|
|
|
|
update tmp_pruef set leistung_nr_msg=leistung_nr,
|
|
|
|
leistungsdatum_msg=leistungsdatum,
|
|
|
|
semester_msg=semester
|
|
|
|
where tmp_pruef.leistungsdetailtyp_kb !='TSAB'
|
|
|
|
;
|
|
|
|
--Fachsemester bei MSG gibt es in CO nicht. Daher die Regel:
|
|
|
|
--die Fachsemesterzahl sollte die höchste FS-Zahl aus allen TSG enthalten:
|
|
|
|
select matrikelnummer,st_studiengang_nr_msg,max(semester) as semester_max,max(fachsemester) as fachsem_max
|
|
|
|
into temp tmp_fachsem_msg
|
|
|
|
from tmp_pruef
|
|
|
|
where leistungsdetailtyp_kb='TSAB'
|
|
|
|
and st_studiengang_nr_msg is not null
|
|
|
|
group by 1,2;
|
|
|
|
|
|
|
|
update tmp_pruef set fachsemester=T.fachsem_max
|
|
|
|
from tmp_fachsem_msg T
|
|
|
|
where T.matrikelnummer=tmp_pruef.matrikelnummer
|
|
|
|
and T.st_studiengang_nr_msg=tmp_pruef.st_studiengang_nr
|
|
|
|
and T.semester_max <=tmp_pruef.semester
|
|
|
|
and tmp_pruef.leistungsdetailtyp_kb='BAKN'
|
|
|
|
;
|
|
|
|
|
|
|
|
drop table tmp_fachsem_msg;
|
|
|
|
|
|
|
|
--unikey setzen, wenn noch nicht vorhanden (z.B. bei MSG):
|
|
|
|
update tmp_pruef set unikey=K.unikey
|
|
|
|
from costage_st_studiengaenge G, costage_st_studienkennzahlen K
|
|
|
|
where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr
|
|
|
|
and K.st_skz_nr=G.st_skz_nr
|
|
|
|
and tmp_pruef.unikey is null
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
delete from costage_st_pruef_aggr
|
|
|
|
where semester >= ${beginn_semester};
|
|
|
|
|
|
|
|
insert into costage_st_pruef_aggr(st_studium_nr,
|
|
|
|
st_studstamm_nr,
|
|
|
|
matrikelnummer,
|
|
|
|
semester,
|
|
|
|
semester_veranst,
|
|
|
|
st_studiengang_nr,
|
|
|
|
st_studiengang_nr_msg,
|
|
|
|
studiengang_nr,
|
|
|
|
fach_nr,
|
|
|
|
unikey,
|
|
|
|
studienidentifikator,
|
|
|
|
fachsemester,
|
|
|
|
leistung_nr,
|
|
|
|
leistungstyp_nr,
|
|
|
|
leistungsdetailtyp_kb,
|
|
|
|
pnr,
|
|
|
|
abschnitt,
|
|
|
|
stp_sp_nr,
|
|
|
|
po_stp_stp_version_kb,
|
|
|
|
note,
|
|
|
|
credits,
|
|
|
|
leistungsdatum,
|
|
|
|
anerkannt_flag,
|
|
|
|
leistungsstatus_nr,
|
|
|
|
leistungsstatus_map_kb,
|
|
|
|
leistung_nr_msg,
|
|
|
|
leistungsdatum_msg,
|
|
|
|
semester_msg,
|
|
|
|
summe)
|
|
|
|
select
|
|
|
|
st_studium_nr,
|
|
|
|
st_studstamm_nr,
|
|
|
|
matrikelnummer,
|
|
|
|
semester,
|
|
|
|
semester_veranst,
|
|
|
|
st_studiengang_nr,
|
|
|
|
st_studiengang_nr_msg,
|
|
|
|
studiengang_nr,
|
|
|
|
fach_nr,
|
|
|
|
unikey,
|
|
|
|
substring(studienidentifikator from 1 for 255),
|
|
|
|
fachsemester,
|
|
|
|
leistung_nr,
|
|
|
|
leistungstyp_nr,
|
|
|
|
leistungsdetailtyp_kb,
|
|
|
|
pnr,
|
|
|
|
abschnitt,
|
|
|
|
stp_sp_nr,
|
|
|
|
po_stp_stp_version_kb,
|
|
|
|
case when pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') or pv_notenskala_typ_kb is null then note_zahl else null::float end as note,
|
|
|
|
credits,
|
|
|
|
leistungsdatum,
|
|
|
|
anerkannt_flag,
|
|
|
|
leistungsstatus_nr,
|
|
|
|
leistungsstatus_map_kb,
|
|
|
|
leistung_nr_msg,
|
|
|
|
leistungsdatum_msg,
|
|
|
|
semester_msg,
|
|
|
|
count(*)
|
|
|
|
from tmp_pruef
|
|
|
|
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;
|
|
|
|
|
|
|
|
drop table tmp_pruef;
|
|
|
|
drop table tmp_pruef2;
|
|
|
|
|