Schnittstelle CampusOnline (TU Graz) zu SuperX-Modul COSTAGE
http://www.superx-projekt.de/doku/costage_modul/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
290 lines
8.2 KiB
290 lines
8.2 KiB
--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 |
|
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 |
|
; |
|
|
|
--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, |
|
studiengang_nr=S.studiengang_nr, |
|
fach_nr=S.fach_nr, |
|
unikey=S.unikey, |
|
st_studiengang_nr_msg=S.st_studiengang_nr_msg |
|
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' |
|
; |
|
|
|
--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, |
|
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, |
|
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; |
|
|
|
drop table tmp_pruef; |
|
drop table tmp_pruef2; |
|
|
|
|