32 changed files with 3676 additions and 116 deletions
@ -0,0 +1,500 @@ |
|||||||
|
--freemarker template |
||||||
|
<#include "SQL_lingua_franca"/> |
||||||
|
<#include "SuperX_general"/> |
||||||
|
|
||||||
|
<sqlvars> |
||||||
|
<sqlvar name="Quellsystem_var"> |
||||||
|
select apnr from konstanten where beschreibung='SOS_Quellsystem' |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="Start_POS_Semester_var"> |
||||||
|
select apnr from konstanten where beschreibung='Start_POS_Semester' |
||||||
|
</sqlvar> |
||||||
|
</sqlvars> |
||||||
|
|
||||||
|
<#if Quellsystem_var=15> |
||||||
|
|
||||||
|
update msg_abp_neu set ch39_vertief = '' where ch39_vertief is null; |
||||||
|
update msg_abp_neu set schwerpunkt = '' where schwerpunkt is null; |
||||||
|
update msg_abp_neu set kz_fach = '' where kz_fach is null; |
||||||
|
update msg_abp_neu set pversion = -1 where pversion is null; |
||||||
|
|
||||||
|
|
||||||
|
CREATE temp TABLE tmp_msg_abp ( |
||||||
|
matrikel_nr integer NOT NULL, |
||||||
|
studiengang_nr smallint, |
||||||
|
fach_nr smallint, |
||||||
|
ch40_studientyp smallint, |
||||||
|
ch35_ang_abschluss char(10) NOT NULL, |
||||||
|
ch35_art_abg_pruef smallint, |
||||||
|
sem_der_pruefung smallint, |
||||||
|
d_abg_pruefung date, |
||||||
|
ch30_fach char(10) NOT NULL, |
||||||
|
ch39_vertief char(10) NOT NULL, |
||||||
|
schwerpunkt char(10), |
||||||
|
kz_fach char(10) NOT NULL, |
||||||
|
pruefungsamt integer, |
||||||
|
haupt_pruef_note numeric(8,2), |
||||||
|
vor_haupt_pruefung character(1) NOT NULL, |
||||||
|
pnr integer, |
||||||
|
degree_program_id integer, |
||||||
|
degree_program_id_tsg integer, |
||||||
|
pversion INTEGER, |
||||||
|
spo_version char(10), |
||||||
|
spo_version_tsg char(10), |
||||||
|
pstatus char(10), |
||||||
|
fach_sem_zahl smallint, |
||||||
|
stort char(10), |
||||||
|
part character(10), |
||||||
|
leistungs_id integer, |
||||||
|
pversuch SMALLINT , |
||||||
|
ppruef1 CHAR(10) , |
||||||
|
ppruef2 CHAR(10) , |
||||||
|
malus FLOAT , |
||||||
|
bonus FLOAT , |
||||||
|
pordnr INTEGER , |
||||||
|
pvermerk char(10), |
||||||
|
prueck integer, |
||||||
|
zeitabschnitt char(10), |
||||||
|
sourcesystem integer, |
||||||
|
pruefungsamt_nr CHAR(7), |
||||||
|
panerk char(10), |
||||||
|
pstatkennz integer, |
||||||
|
stuart VARCHAR(10), |
||||||
|
stufrm VARCHAR(10), |
||||||
|
stutyp char(10), |
||||||
|
sem_der_pruefung_tsg SMALLINT , |
||||||
|
d_abg_pruefung_tsg date, |
||||||
|
note_tsg numeric(8,2), |
||||||
|
fach_sem_zahl_tsg smallint, |
||||||
|
leistungs_id_msg integer, |
||||||
|
pstatus_tsg char(10), |
||||||
|
studienidentifikator varchar(255), |
||||||
|
studienidentifikator_tsg varchar(255), |
||||||
|
fach_abschlussarbeit CHAR(10) |
||||||
|
|
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
insert into tmp_msg_abp |
||||||
|
(matrikel_nr, |
||||||
|
studiengang_nr, |
||||||
|
fach_nr, |
||||||
|
ch35_ang_abschluss, |
||||||
|
sem_der_pruefung, |
||||||
|
d_abg_pruefung, |
||||||
|
ch30_fach, |
||||||
|
ch39_vertief, |
||||||
|
schwerpunkt, |
||||||
|
kz_fach, |
||||||
|
haupt_pruef_note, |
||||||
|
vor_haupt_pruefung, |
||||||
|
pnr, |
||||||
|
degree_program_id, |
||||||
|
degree_program_id_tsg, |
||||||
|
pversion, |
||||||
|
spo_version, |
||||||
|
spo_version_tsg, |
||||||
|
pstatus, |
||||||
|
fach_sem_zahl, |
||||||
|
fach_sem_zahl_tsg, |
||||||
|
part, |
||||||
|
leistungs_id, |
||||||
|
pversuch , |
||||||
|
ppruef1 , |
||||||
|
ppruef2 , |
||||||
|
malus , |
||||||
|
bonus , |
||||||
|
pordnr , |
||||||
|
pvermerk, |
||||||
|
prueck , |
||||||
|
zeitabschnitt , |
||||||
|
sourcesystem , |
||||||
|
pruefungsamt_nr, |
||||||
|
panerk, |
||||||
|
pstatkennz, |
||||||
|
stuart, |
||||||
|
stufrm, |
||||||
|
stutyp, |
||||||
|
sem_der_pruefung_tsg, |
||||||
|
d_abg_pruefung_tsg, |
||||||
|
note_tsg, |
||||||
|
pstatus_tsg, |
||||||
|
studienidentifikator , |
||||||
|
studienidentifikator_tsg, |
||||||
|
fach_abschlussarbeit |
||||||
|
) |
||||||
|
select |
||||||
|
matrikel_nr, |
||||||
|
to_number(studiengang_nr,'9'), |
||||||
|
to_number(fach_nr,'9'), |
||||||
|
ch35_ang_abschluss, |
||||||
|
sem_der_pruefung, |
||||||
|
d_abg_pruefung, |
||||||
|
ch30_fach, |
||||||
|
ch39_vertief, |
||||||
|
schwerpunkt, |
||||||
|
kz_fach, |
||||||
|
haupt_pruef_note::float, |
||||||
|
'H', |
||||||
|
pnr, |
||||||
|
degree_program_id, |
||||||
|
degree_program_id_tsg, |
||||||
|
val('' || pversion), |
||||||
|
(case when part='TSAB' then null::char(10) else pversion end) as spo_version, |
||||||
|
(case when part='TSAB' then pversion else null::char(10) end) as spo_version_tsg, |
||||||
|
pstatus, |
||||||
|
fach_sem_zahl, |
||||||
|
fach_sem_zahl_tsg, |
||||||
|
part, |
||||||
|
leistungs_id, |
||||||
|
pversuch , |
||||||
|
ppruef1 , |
||||||
|
ppruef2 , |
||||||
|
malus , |
||||||
|
bonus , |
||||||
|
pordnr, |
||||||
|
pvermerk , |
||||||
|
prueck , |
||||||
|
zeitabschnitt , |
||||||
|
${Quellsystem_var}, |
||||||
|
pruefungsamt_nr, |
||||||
|
panerk, |
||||||
|
val(pstatkennz), |
||||||
|
stuart, |
||||||
|
stufrm, |
||||||
|
stutyp, |
||||||
|
sem_der_pruefung_tsg, |
||||||
|
d_abg_pruefung_tsg, |
||||||
|
note_tsg, |
||||||
|
pstatus_tsg, |
||||||
|
studienidentifikator , |
||||||
|
studienidentifikator_tsg, |
||||||
|
fach_abschlussarbeit |
||||||
|
from msg_abp_neu P |
||||||
|
where |
||||||
|
P.ch35_ang_abschluss is not NULL |
||||||
|
and P.ch30_fach is not NULL |
||||||
|
and P.kz_fach is not NULL |
||||||
|
--and P.pnr in |
||||||
|
--(select apnr from sos_vdhdpnr) |
||||||
|
; |
||||||
|
DELETE FROM tmp_msg_abp WHERE leistungs_id IS NULL; |
||||||
|
|
||||||
|
<#if SOS_ABSCHLUSSTYP_VORPRUEFUNG?exists> |
||||||
|
update tmp_msg_abp set vor_haupt_pruefung='V' |
||||||
|
where ${SOS_ABSCHLUSSTYP_VORPRUEFUNG}; |
||||||
|
</#if> |
||||||
|
|
||||||
|
update tmp_msg_abp set leistungs_id_msg=L.labnrzu |
||||||
|
from sos_labzuord L |
||||||
|
where L.labnr=tmp_msg_abp.leistungs_id; |
||||||
|
|
||||||
|
--spo-Version des MSG bei TSAB nachladen: |
||||||
|
update tmp_msg_abp set spo_version=L.pversion |
||||||
|
from msg_abp_neu L |
||||||
|
where L.leistungs_id=tmp_msg_abp.leistungs_id_msg |
||||||
|
and tmp_msg_abp.part='TSAB' |
||||||
|
; |
||||||
|
|
||||||
|
--bei MSG wird studiengang_nr aus dem TSG |
||||||
|
--der Abschlussarbeit ermittelt: |
||||||
|
update tmp_msg_abp set studiengang_nr=val(P.studiengang_nr) --, |
||||||
|
--fach_nr=val(P.fach_nr) |
||||||
|
from msg_abp_neu P, sos_labzuord L |
||||||
|
where P.leistungs_id=L.labnr |
||||||
|
and tmp_msg_abp.leistungs_id= L.labnrzu |
||||||
|
and tmp_msg_abp.ch30_fach=P.ch30_fach |
||||||
|
and tmp_msg_abp.ch35_ang_abschluss=P.ch35_ang_abschluss |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
--wenn das nicht klappt aus studienverlauf: |
||||||
|
update tmp_msg_abp set |
||||||
|
studiengang_nr = F.studiengang_nr |
||||||
|
from sos_stg F where |
||||||
|
tmp_msg_abp.matrikel_nr =F.matrikel_nr |
||||||
|
and tmp_msg_abp.sem_der_pruefung >= F.sem_rueck_beur_ein |
||||||
|
and tmp_msg_abp.ch30_fach = F.ch30_fach |
||||||
|
and tmp_msg_abp.ch39_vertief = F.ch39_vertief |
||||||
|
and (tmp_msg_abp.schwerpunkt = F.schwerpunkt or tmp_msg_abp.schwerpunkt='') |
||||||
|
and tmp_msg_abp.kz_fach = F.kz_fach |
||||||
|
and tmp_msg_abp.ch35_ang_abschluss = F.ch35_ang_abschluss |
||||||
|
and ( tmp_msg_abp.studiengang_nr is null or tmp_msg_abp.studiengang_nr=0 |
||||||
|
); |
||||||
|
update tmp_msg_abp set |
||||||
|
fach_nr = F.fach_nr |
||||||
|
from sos_stg F where |
||||||
|
tmp_msg_abp.matrikel_nr =F.matrikel_nr |
||||||
|
and tmp_msg_abp.sem_der_pruefung >= F.sem_rueck_beur_ein |
||||||
|
and tmp_msg_abp.ch30_fach = F.ch30_fach |
||||||
|
and tmp_msg_abp.ch39_vertief = F.ch39_vertief |
||||||
|
and (tmp_msg_abp.schwerpunkt = F.schwerpunkt or tmp_msg_abp.schwerpunkt='') |
||||||
|
and tmp_msg_abp.kz_fach = F.kz_fach |
||||||
|
and tmp_msg_abp.ch35_ang_abschluss = F.ch35_ang_abschluss |
||||||
|
and ( tmp_msg_abp.fach_nr is null or tmp_msg_abp.fach_nr=0 |
||||||
|
) |
||||||
|
and zeitabschnitt!='MSG' |
||||||
|
; |
||||||
|
update tmp_msg_abp set |
||||||
|
fach_sem_zahl = F.fach_sem_zahl |
||||||
|
from sos_stg F where |
||||||
|
tmp_msg_abp.matrikel_nr =F.matrikel_nr |
||||||
|
and tmp_msg_abp.sem_der_pruefung >= F.sem_rueck_beur_ein |
||||||
|
and tmp_msg_abp.ch30_fach = F.ch30_fach |
||||||
|
and tmp_msg_abp.ch39_vertief = F.ch39_vertief |
||||||
|
and (tmp_msg_abp.schwerpunkt = F.schwerpunkt or tmp_msg_abp.schwerpunkt='') |
||||||
|
and tmp_msg_abp.kz_fach = F.kz_fach |
||||||
|
and tmp_msg_abp.ch35_ang_abschluss = F.ch35_ang_abschluss |
||||||
|
and tmp_msg_abp.fach_sem_zahl is null |
||||||
|
and part!='TSAB'; |
||||||
|
|
||||||
|
SELECT 'lookup stutyp and stuart:' || now() FROM xdummy; |
||||||
|
|
||||||
|
CREATE TEMP TABLE tmp_stg |
||||||
|
( |
||||||
|
matrikel_nr INTEGER , |
||||||
|
ch35_ang_abschluss CHAR(10), |
||||||
|
ch30_fach CHAR(10), |
||||||
|
stuart CHAR(10), |
||||||
|
stutyp CHAR(10), |
||||||
|
sem_rueck_beur_ein_max SMALLINT |
||||||
|
); |
||||||
|
INSERT INTO tmp_stg( |
||||||
|
matrikel_nr, |
||||||
|
ch35_ang_abschluss, |
||||||
|
ch30_fach, |
||||||
|
stuart, |
||||||
|
stutyp, |
||||||
|
sem_rueck_beur_ein_max |
||||||
|
) |
||||||
|
SELECT |
||||||
|
matrikel_nr, |
||||||
|
ch35_ang_abschluss, |
||||||
|
ch30_fach, |
||||||
|
stuart, |
||||||
|
stutyp, |
||||||
|
max(sem_rueck_beur_ein) |
||||||
|
FROM |
||||||
|
sos_stg |
||||||
|
WHERE |
||||||
|
today() BETWEEN gueltig_von AND gueltig_bis |
||||||
|
and matrikel_nr in (select distinct T.matrikel_nr from tmp_msg_abp T) |
||||||
|
--and 1=0 |
||||||
|
GROUP BY |
||||||
|
1,2,3,4,5 |
||||||
|
; |
||||||
|
|
||||||
|
CREATE INDEX tmp_ix1 ON tmp_stg(matrikel_nr); |
||||||
|
CREATE INDEX tmp_ix2 ON tmp_stg(ch35_ang_abschluss,ch30_fach); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
UPDATE |
||||||
|
tmp_msg_abp |
||||||
|
SET |
||||||
|
stuart = stg.stuart |
||||||
|
FROM |
||||||
|
tmp_stg stg |
||||||
|
WHERE |
||||||
|
tmp_msg_abp.matrikel_nr = stg.matrikel_nr |
||||||
|
AND tmp_msg_abp.ch35_ang_abschluss = stg.ch35_ang_abschluss |
||||||
|
AND tmp_msg_abp.ch30_fach = stg.ch30_fach |
||||||
|
AND stg.sem_rueck_beur_ein_max <= tmp_msg_abp.sem_der_pruefung |
||||||
|
AND stg.stuart IS NOT NULL |
||||||
|
and tmp_msg_abp.stuart IS NULL |
||||||
|
AND tmp_msg_abp.vor_haupt_pruefung IN ('V','H') |
||||||
|
; |
||||||
|
--jetzt TSG: |
||||||
|
UPDATE |
||||||
|
tmp_msg_abp |
||||||
|
SET |
||||||
|
stuart = stg.stuart |
||||||
|
FROM |
||||||
|
tmp_stg stg |
||||||
|
WHERE |
||||||
|
tmp_msg_abp.matrikel_nr = stg.matrikel_nr |
||||||
|
AND tmp_msg_abp.ch35_ang_abschluss = stg.ch35_ang_abschluss |
||||||
|
AND tmp_msg_abp.ch30_fach = stg.ch30_fach |
||||||
|
AND stg.sem_rueck_beur_ein_max <= tmp_msg_abp.sem_der_pruefung_tsg |
||||||
|
AND stg.stuart IS NOT NULL |
||||||
|
and tmp_msg_abp.stuart IS NULL |
||||||
|
AND tmp_msg_abp.vor_haupt_pruefung IN ('V','H') |
||||||
|
; |
||||||
|
|
||||||
|
UPDATE |
||||||
|
tmp_msg_abp |
||||||
|
SET |
||||||
|
stutyp = stg.stutyp |
||||||
|
FROM |
||||||
|
tmp_stg stg |
||||||
|
WHERE |
||||||
|
tmp_msg_abp.matrikel_nr = stg.matrikel_nr |
||||||
|
AND tmp_msg_abp.ch35_ang_abschluss = stg.ch35_ang_abschluss |
||||||
|
AND tmp_msg_abp.ch30_fach = stg.ch30_fach |
||||||
|
AND stg.sem_rueck_beur_ein_max <= tmp_msg_abp.sem_der_pruefung |
||||||
|
AND stg.stutyp IS NOT NULL |
||||||
|
and tmp_msg_abp.stutyp IS NULL |
||||||
|
AND tmp_msg_abp.vor_haupt_pruefung IN ('V','H') |
||||||
|
; |
||||||
|
--TSG: |
||||||
|
UPDATE |
||||||
|
tmp_msg_abp |
||||||
|
SET |
||||||
|
stutyp = stg.stutyp |
||||||
|
FROM |
||||||
|
tmp_stg stg |
||||||
|
WHERE |
||||||
|
tmp_msg_abp.matrikel_nr = stg.matrikel_nr |
||||||
|
AND tmp_msg_abp.ch35_ang_abschluss = stg.ch35_ang_abschluss |
||||||
|
AND tmp_msg_abp.ch30_fach = stg.ch30_fach |
||||||
|
AND stg.sem_rueck_beur_ein_max <= tmp_msg_abp.sem_der_pruefung_tsg |
||||||
|
AND stg.stutyp IS NOT NULL |
||||||
|
and tmp_msg_abp.stutyp IS NULL |
||||||
|
AND tmp_msg_abp.vor_haupt_pruefung IN ('V','H') |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
drop table tmp_stg; |
||||||
|
|
||||||
|
|
||||||
|
-- end of 'stufrm'/'stuart' lookup |
||||||
|
select 'end of lookup stufrm,stutyp and stuart:' || now() from xdummy; |
||||||
|
|
||||||
|
--keine Fach-nr. bei MSG Abschlüssen: |
||||||
|
update tmp_msg_abp set fach_nr=null where zeitabschnitt='MSG'; |
||||||
|
|
||||||
|
--Prüfroutine |
||||||
|
insert into sos_pruefrout |
||||||
|
( |
||||||
|
tabelle, |
||||||
|
tabelle_sos, |
||||||
|
matrikel_nr, |
||||||
|
semester, |
||||||
|
problem, |
||||||
|
aktion |
||||||
|
) |
||||||
|
select |
||||||
|
'msg_abp_neu', |
||||||
|
'abp', |
||||||
|
matrikel_nr,sem_der_pruefung, |
||||||
|
'studiengang_nr/fach_nr unbekannt, Prüfung wird gelöscht', |
||||||
|
'Warnung' |
||||||
|
from tmp_msg_abp |
||||||
|
where (studiengang_nr is null |
||||||
|
or fach_nr is null) |
||||||
|
; |
||||||
|
|
||||||
|
--insert in echte Tabelle: |
||||||
|
delete from msg_abp |
||||||
|
where (sourcesystem=${Quellsystem_var} |
||||||
|
or sourcesystem is null) |
||||||
|
and (matrikel_nr,sourcesystem,ch35_ang_abschluss) |
||||||
|
in (select matrikel_nr,sourcesystem,ch35_ang_abschluss |
||||||
|
from tmp_msg_abp) |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
insert into msg_abp |
||||||
|
(matrikel_nr, |
||||||
|
studiengang_nr, |
||||||
|
fach_nr, |
||||||
|
ch35_ang_abschluss, |
||||||
|
sem_der_pruefung, |
||||||
|
d_abg_pruefung, |
||||||
|
ch30_fach, |
||||||
|
ch39_vertief, |
||||||
|
schwerpunkt, |
||||||
|
kz_fach, |
||||||
|
haupt_pruef_note, |
||||||
|
vor_haupt_pruefung, |
||||||
|
pnr, |
||||||
|
pversion, |
||||||
|
spo_version, |
||||||
|
spo_version_tsg, |
||||||
|
pstatus, |
||||||
|
fach_sem_zahl, |
||||||
|
part, |
||||||
|
leistungs_id, |
||||||
|
pversuch , |
||||||
|
ppruef1 , |
||||||
|
ppruef2 , |
||||||
|
malus , |
||||||
|
bonus , |
||||||
|
pordnr , |
||||||
|
stort, |
||||||
|
pvermerk, |
||||||
|
prueck , |
||||||
|
zeitabschnitt, |
||||||
|
sourcesystem, |
||||||
|
pruefungsamt_nr, |
||||||
|
panerk, |
||||||
|
pstatkennz, |
||||||
|
stuart, |
||||||
|
stufrm, |
||||||
|
stutyp, |
||||||
|
degree_program_id, |
||||||
|
degree_program_id_tsg, |
||||||
|
sem_der_pruefung_tsg, |
||||||
|
d_abg_pruefung_tsg, |
||||||
|
note_tsg, |
||||||
|
fach_sem_zahl_tsg, |
||||||
|
pstatus_tsg, |
||||||
|
studienidentifikator , |
||||||
|
studienidentifikator_tsg, |
||||||
|
fach_abschlussarbeit |
||||||
|
) |
||||||
|
select matrikel_nr, |
||||||
|
studiengang_nr, |
||||||
|
fach_nr, |
||||||
|
ch35_ang_abschluss, |
||||||
|
sem_der_pruefung, |
||||||
|
d_abg_pruefung, |
||||||
|
ch30_fach, |
||||||
|
ch39_vertief, |
||||||
|
schwerpunkt, |
||||||
|
kz_fach, |
||||||
|
haupt_pruef_note, |
||||||
|
vor_haupt_pruefung, |
||||||
|
pnr, |
||||||
|
pversion, |
||||||
|
spo_version, |
||||||
|
spo_version_tsg, |
||||||
|
pstatus, |
||||||
|
fach_sem_zahl, |
||||||
|
part, |
||||||
|
leistungs_id, |
||||||
|
pversuch , |
||||||
|
ppruef1 , |
||||||
|
ppruef2 , |
||||||
|
malus , |
||||||
|
bonus , |
||||||
|
pordnr , |
||||||
|
stort, |
||||||
|
pvermerk, |
||||||
|
prueck , |
||||||
|
zeitabschnitt, |
||||||
|
sourcesystem, |
||||||
|
pruefungsamt_nr, |
||||||
|
panerk, |
||||||
|
pstatkennz, |
||||||
|
stuart, |
||||||
|
stufrm, |
||||||
|
stutyp, |
||||||
|
degree_program_id, |
||||||
|
degree_program_id_tsg, |
||||||
|
sem_der_pruefung_tsg, |
||||||
|
d_abg_pruefung_tsg, |
||||||
|
note_tsg, |
||||||
|
fach_sem_zahl_tsg, |
||||||
|
pstatus_tsg, |
||||||
|
studienidentifikator , |
||||||
|
studienidentifikator_tsg, |
||||||
|
fach_abschlussarbeit |
||||||
|
from tmp_msg_abp |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
drop TABLE tmp_msg_abp; |
||||||
|
|
||||||
|
</#if> |
||||||
|
|
||||||
@ -0,0 +1,54 @@ |
|||||||
|
--freemarker template |
||||||
|
|
||||||
|
<#include "SQL_lingua_franca"/> |
||||||
|
<#include "SuperX_general"/> |
||||||
|
|
||||||
|
<sqlvars> |
||||||
|
|
||||||
|
<sqlvar name="Quellsystem_var"> |
||||||
|
select apnr from konstanten where beschreibung='SOS_Quellsystem'; |
||||||
|
</sqlvar> |
||||||
|
|
||||||
|
|
||||||
|
</sqlvars> |
||||||
|
|
||||||
|
select S.leistungs_id |
||||||
|
into temp tmp_delete |
||||||
|
from msg_abp S left outer join msg_abp_neu N on ( |
||||||
|
S.matrikel_nr=N.matrikel_nr |
||||||
|
and S.leistungs_id=N.leistungs_id) |
||||||
|
where S.sourcesystem=${Quellsystem_var} |
||||||
|
and coalesce(S.sem_der_pruefung,S.sem_der_pruefung_tsg) >= ${K_Start_POS_Semester} |
||||||
|
and N.leistungs_id is null |
||||||
|
; |
||||||
|
|
||||||
|
insert into sos_pruefrout |
||||||
|
( |
||||||
|
datum, |
||||||
|
semester, |
||||||
|
tabelle, |
||||||
|
tabelle_sos, |
||||||
|
matrikel_nr, |
||||||
|
problem, |
||||||
|
aktion |
||||||
|
) |
||||||
|
|
||||||
|
select today(), |
||||||
|
coalesce(S.sem_der_pruefung,S.sem_der_pruefung_tsg) as sem_der_pruefung, |
||||||
|
'msg_abp', |
||||||
|
'abp', |
||||||
|
S.matrikel_nr, |
||||||
|
'Die Hauptprüfung mit der ID: ' || S.leistungs_id || ' wurde gelöscht, da diese nicht im Vorsystem zu finden ist', |
||||||
|
'Info' |
||||||
|
from msg_abp S, tmp_delete D |
||||||
|
where D.leistungs_id=S.leistungs_id |
||||||
|
; |
||||||
|
|
||||||
|
delete from msg_abp |
||||||
|
where leistungs_id in (select leistungs_id |
||||||
|
from tmp_delete); |
||||||
|
|
||||||
|
|
||||||
|
drop table tmp_delete; |
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,12 @@ |
|||||||
|
|
||||||
|
select * from xdummy; |
||||||
|
|
||||||
|
--bei Postgres in HIS1 laufen alle Scripte in Transaktionen, daher muss man |
||||||
|
--für vacuum erst committen |
||||||
|
|
||||||
|
commit; |
||||||
|
|
||||||
|
vacuum msg_abp; |
||||||
|
vacuum msg_abp_aggr; |
||||||
|
vacuum msg_abp_aggr_gew; |
||||||
|
vacuum msg_fkombi_aggr; |
||||||
@ -0,0 +1,660 @@ |
|||||||
|
--freemarker template |
||||||
|
|
||||||
|
--(c) 2024 Daniel Quathamer |
||||||
|
<sqlvars> |
||||||
|
<sqlvar name = "p_pruef_sem_zahl_decimal_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'pruef_sem_zahl_decimal'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "p_start_pos_sem_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'Start_POS_Semester'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "matrikelnr_min_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'matrikelnr_min'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "matrikelnr_max_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'matrikelnr_max'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "p_promotion_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'SOS_status_prom'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "stichtag_tagesaktuell_var"> |
||||||
|
SELECT tid FROM sos_stichtag WHERE appl_key = '2'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "SOS_MTKNR_EXT"> |
||||||
|
SELECT 1 FROM xdummy WHERE 0 != |
||||||
|
(SELECT count(*) FROM konstanten WHERE beschreibung = 'SOS_MTKNR_EXT' AND apnr = 1) |
||||||
|
UNION |
||||||
|
SELECT 0 FROM xdummy WHERE 0 = |
||||||
|
(SELECT count(*) FROM konstanten WHERE beschreibung = 'SOS_MTKNR_EXT' AND apnr = 1); |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "Quellsystem_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'SOS_Quellsystem'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="istTrimester"> |
||||||
|
select 1 from xdummy where 3=(select max(mod(tid,10)) from semester) |
||||||
|
union |
||||||
|
select 0 from xdummy where 3!=(select max(mod(tid,10)) from semester) |
||||||
|
; |
||||||
|
</sqlvar> |
||||||
|
</sqlvars> |
||||||
|
|
||||||
|
-- Falls es Konstanten nicht gibt, Defaultwert: |
||||||
|
<#assign p_start_pos_sem = 19001 /> |
||||||
|
<#if p_start_pos_sem_var?exists && p_start_pos_sem_var?string?length > 0> |
||||||
|
<#assign p_start_pos_sem = p_start_pos_sem_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
-- Sollen Fachsem. dezimal berechnet werden, d.h. relativ zum Prüfungsdatum? |
||||||
|
-- Falls Variable nicht belegt, default 0 (Ganzzahlig) |
||||||
|
<#assign p_pruef_sem_zahl_decimal = 0 /> |
||||||
|
<#if p_pruef_sem_zahl_decimal_var?exists && p_pruef_sem_zahl_decimal_var?string?length > 0> |
||||||
|
<#assign p_pruef_sem_zahl_decimal = p_pruef_sem_zahl_decimal_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign matrikelnr_min = 0 /> |
||||||
|
<#if matrikelnr_min_var?exists && matrikelnr_min_var?string?length > 0> |
||||||
|
<#assign matrikelnr_min = matrikelnr_min_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign matrikelnr_max = 2147483647 /> |
||||||
|
<#if matrikelnr_max_var?exists && matrikelnr_max_var?string?length > 0> |
||||||
|
<#assign matrikelnr_max = matrikelnr_max_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
|
||||||
|
<#assign p_promotion = 6 /> |
||||||
|
<#if p_promotion_var?exists && p_promotion_var?string?length > 0> |
||||||
|
<#assign p_promotion = p_promotion_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign stichtag_tagesaktuell = 0 /> |
||||||
|
<#if stichtag_tagesaktuell_var?exists && stichtag_tagesaktuell_var?string?length > 0> |
||||||
|
<#assign stichtag_tagesaktuell = stichtag_tagesaktuell_var /> |
||||||
|
</#if> |
||||||
|
<#if istTrimester==1> |
||||||
|
<#assign Trimester="true" /> |
||||||
|
<#else> |
||||||
|
<#assign Trimester="false" /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign bezugssemester_cond="(case when part='TSAB' then sem_der_pruefung_tsg else sem_der_pruefung end)" /> |
||||||
|
<#assign pdatumsfeld_cond="(case when part='TSAB' then d_abg_pruefung_tsg else d_abg_pruefung end)" /> |
||||||
|
|
||||||
|
<#assign target_fields_except_stichtag=" matrikel_nr, |
||||||
|
alter, |
||||||
|
geschlecht, |
||||||
|
ca12_staat, |
||||||
|
ort_der_hzb, |
||||||
|
staat_der_hzb, |
||||||
|
hzbart_int, |
||||||
|
hzbart, |
||||||
|
pseudonym, |
||||||
|
sem_der_pruefung, |
||||||
|
sem_der_pruefung_tsg, |
||||||
|
sem_d_abg_pruefung, |
||||||
|
sem_d_abg_pruefung_tsg, |
||||||
|
d_abg_pruefung, |
||||||
|
d_abg_pruefung_tsg, |
||||||
|
bezugssemester, |
||||||
|
tid_stg, |
||||||
|
stufrm, |
||||||
|
stuart, |
||||||
|
regel, |
||||||
|
pordnr, |
||||||
|
studiengang_nr, |
||||||
|
fach_nr, |
||||||
|
st_studium_nr, |
||||||
|
st_studium_nr_tsg, |
||||||
|
fach_sem_zahl, |
||||||
|
fach_sem_zahl_tsg, |
||||||
|
part, |
||||||
|
leistungs_id, |
||||||
|
pnr, |
||||||
|
pversuch, |
||||||
|
sourcesystem, |
||||||
|
pvermerk, |
||||||
|
note, |
||||||
|
note_tsg, |
||||||
|
notenskala, |
||||||
|
pstatus, |
||||||
|
pstatus_tsg, |
||||||
|
prueck, |
||||||
|
ects, |
||||||
|
ects_tsg, |
||||||
|
studiengangstyp, |
||||||
|
abschnitt, |
||||||
|
spo_version, |
||||||
|
spo_version_tsg, |
||||||
|
studienidentifikator , |
||||||
|
studienidentifikator_tsg, |
||||||
|
fach_abschlussarbeit, |
||||||
|
summe" /> |
||||||
|
|
||||||
|
<#if Quellsystem_var=15> |
||||||
|
|
||||||
|
|
||||||
|
SELECT 'Matrikelnr. Max: ${matrikelnr_max} '::CHAR(30) FROM xdummy; |
||||||
|
SELECT 'Matrikelnr. Min: ${matrikelnr_min} '::CHAR(30) FROM xdummy; |
||||||
|
SELECT 'SOS_MTKNR_EXT: ${SOS_MTKNR_EXT} '::CHAR(30) FROM xdummy; |
||||||
|
SELECT 'Startsemester ${K_SOS_start_lab}'::CHAR(30) FROM xdummy; |
||||||
|
SELECT 'Startsemester Vorsemester ${K_SOS_start_lab_vorsemester}'::CHAR(30) FROM xdummy; |
||||||
|
|
||||||
|
SELECT now(),'Anzahl Sätze in msg_abp_aggr:'::CHAR(30),count(*) FROM msg_abp_aggr GROUP BY 1,2; |
||||||
|
|
||||||
|
CREATE TEMP TABLE tmp_abp_aggr( |
||||||
|
matrikel_nr INTEGER , |
||||||
|
alter decimal(14,2) , |
||||||
|
d_geburt date, |
||||||
|
geschlecht SMALLINT , |
||||||
|
ca12_staat SMALLINT , |
||||||
|
ort_der_hzb SMALLINT , |
||||||
|
staat_der_hzb INTEGER , |
||||||
|
hzbart_int CHAR(10) , |
||||||
|
hzbart SMALLINT , |
||||||
|
pseudonym VARCHAR(255) , |
||||||
|
sem_der_pruefung SMALLINT , |
||||||
|
sem_der_pruefung_tsg SMALLINT , |
||||||
|
sem_d_abg_pruefung SMALLINT , |
||||||
|
sem_d_abg_pruefung_tsg SMALLINT , |
||||||
|
d_abg_pruefung DATE , |
||||||
|
d_abg_pruefung_tsg DATE , |
||||||
|
stichtag INTEGER , |
||||||
|
tid_stg INTEGER , |
||||||
|
--Studiengang einzeln: |
||||||
|
ch35_ang_abschluss CHAR(10) , |
||||||
|
ch30_fach CHAR(10), |
||||||
|
ch39_vertief CHAR(10), |
||||||
|
schwerpunkt CHAR(10), |
||||||
|
kz_fach CHAR(10), |
||||||
|
stort CHAR(10), |
||||||
|
stutyp CHAR(10), |
||||||
|
pversion integer, |
||||||
|
spo_version CHAR(10), |
||||||
|
spo_version_tsg CHAR(10), |
||||||
|
studienidentifikator varchar(255), |
||||||
|
studienidentifikator_tsg varchar(255), |
||||||
|
--Ende Studiengang |
||||||
|
stufrm CHAR(10) , |
||||||
|
stuart CHAR(10) , |
||||||
|
regel SMALLINT , |
||||||
|
pordnr INTEGER , |
||||||
|
studiengang_nr SMALLINT , |
||||||
|
fach_nr SMALLINT , |
||||||
|
st_studium_nr INTEGER , |
||||||
|
st_studium_nr_tsg INTEGER , |
||||||
|
st_studium_nr_tmp INTEGER , --wird später zum st_studium_nr und st_studium_nr_tsg |
||||||
|
fach_sem_zahl decimal(10,2) , |
||||||
|
fach_sem_zahl_tsg SMALLINT , |
||||||
|
part CHAR(10) , |
||||||
|
leistungs_id INTEGER , |
||||||
|
pnr INTEGER , |
||||||
|
pversuch INTEGER , |
||||||
|
sourcesystem INTEGER , |
||||||
|
pvermerk CHAR(10) , |
||||||
|
note decimal(8,2) , |
||||||
|
note_tsg decimal(8,2) , |
||||||
|
notenskala CHAR(10) , |
||||||
|
pstatus CHAR(10) , |
||||||
|
pstatus_tsg CHAR(10) , |
||||||
|
prueck SMALLINT , |
||||||
|
ects FLOAT , |
||||||
|
ects_tsg FLOAT , |
||||||
|
summe INTEGER , |
||||||
|
studiengangstyp char(10), |
||||||
|
abschnitt smallint, |
||||||
|
bezugssemester integer, |
||||||
|
pdatumsfeld date, |
||||||
|
fach_abschlussarbeit CHAR(10) |
||||||
|
) |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
-- Zuerst werden die lab-Sätze temporär gespeichert und um das Semester laut Prüfungsdatum ergänzt. |
||||||
|
INSERT INTO tmp_abp_aggr( |
||||||
|
matrikel_nr, |
||||||
|
-- alter, |
||||||
|
-- geschlecht, |
||||||
|
-- ca12_staat, |
||||||
|
-- ort_der_hzb, |
||||||
|
-- staat_der_hzb, |
||||||
|
-- hzbart_int, |
||||||
|
-- hzbart, |
||||||
|
-- pseudonym, |
||||||
|
sem_der_pruefung, |
||||||
|
sem_der_pruefung_tsg, |
||||||
|
-- sem_d_abg_pruefung, |
||||||
|
-- sem_d_abg_pruefung_tsg, |
||||||
|
d_abg_pruefung, |
||||||
|
d_abg_pruefung_tsg, |
||||||
|
stichtag, |
||||||
|
-- tid_stg, |
||||||
|
stufrm, |
||||||
|
stuart, |
||||||
|
-- regel, |
||||||
|
pordnr, |
||||||
|
studiengang_nr, |
||||||
|
fach_nr, |
||||||
|
studienidentifikator , |
||||||
|
studienidentifikator_tsg, |
||||||
|
-- st_studium_nr, |
||||||
|
-- st_studium_nr_tsg, |
||||||
|
st_studium_nr_tmp, |
||||||
|
st_studium_nr_tsg, |
||||||
|
fach_sem_zahl, |
||||||
|
fach_sem_zahl_tsg, |
||||||
|
part, |
||||||
|
leistungs_id, |
||||||
|
pnr, |
||||||
|
pversuch, |
||||||
|
sourcesystem, |
||||||
|
pvermerk, |
||||||
|
note, |
||||||
|
note_tsg, |
||||||
|
notenskala, |
||||||
|
pstatus, |
||||||
|
pstatus_tsg, |
||||||
|
prueck, |
||||||
|
ects, |
||||||
|
ects_tsg, |
||||||
|
summe, |
||||||
|
ch35_ang_abschluss, |
||||||
|
ch30_fach, |
||||||
|
ch39_vertief, |
||||||
|
schwerpunkt, |
||||||
|
kz_fach, |
||||||
|
pversion, |
||||||
|
spo_version, |
||||||
|
spo_version_tsg, |
||||||
|
stort, |
||||||
|
stutyp, |
||||||
|
abschnitt, |
||||||
|
studiengangstyp, |
||||||
|
bezugssemester , |
||||||
|
pdatumsfeld, |
||||||
|
fach_abschlussarbeit |
||||||
|
) |
||||||
|
SELECT |
||||||
|
matrikel_nr, |
||||||
|
-- alter, |
||||||
|
-- geschlecht, |
||||||
|
-- ca12_staat, |
||||||
|
-- ort_der_hzb, |
||||||
|
-- staat_der_hzb, |
||||||
|
-- hzbart_int, |
||||||
|
-- hzbart, |
||||||
|
-- pseudonym, |
||||||
|
sem_der_pruefung, |
||||||
|
sem_der_pruefung_tsg, |
||||||
|
d_abg_pruefung, |
||||||
|
d_abg_pruefung_tsg, |
||||||
|
I.tid as stichtag, |
||||||
|
-- tid_stg, |
||||||
|
stufrm, |
||||||
|
stuart, |
||||||
|
-- regel, |
||||||
|
pordnr, |
||||||
|
studiengang_nr, |
||||||
|
fach_nr, |
||||||
|
studienidentifikator , |
||||||
|
studienidentifikator_tsg, |
||||||
|
degree_program_id as st_studium_nr_tmp, |
||||||
|
degree_program_id_tsg as st_studium_nr_tsg, |
||||||
|
fach_sem_zahl, |
||||||
|
fach_sem_zahl_tsg, |
||||||
|
part, |
||||||
|
leistungs_id, |
||||||
|
pnr, |
||||||
|
pversuch, |
||||||
|
sourcesystem, |
||||||
|
pvermerk, |
||||||
|
haupt_pruef_note as note, |
||||||
|
note_tsg, |
||||||
|
null::char(10) as notenskala, --TODO |
||||||
|
pstatus, |
||||||
|
pstatus_tsg, |
||||||
|
prueck, |
||||||
|
null::float as ects,--TODO |
||||||
|
null::float as ects_tsg,--TODO |
||||||
|
1 as summe, |
||||||
|
ch35_ang_abschluss, |
||||||
|
ch30_fach, |
||||||
|
ch39_vertief, |
||||||
|
schwerpunkt, |
||||||
|
kz_fach, |
||||||
|
pversion, |
||||||
|
spo_version, |
||||||
|
spo_version_tsg, |
||||||
|
stort, |
||||||
|
stutyp, |
||||||
|
(case when vor_haupt_pruefung='V' then 1 |
||||||
|
when vor_haupt_pruefung='H' then 2 end ) as abschnitt, |
||||||
|
zeitabschnitt, |
||||||
|
${bezugssemester_cond} as bezugssemester , |
||||||
|
${pdatumsfeld_cond} as pdatumsfeld, |
||||||
|
fach_abschlussarbeit |
||||||
|
FROM |
||||||
|
msg_abp L, sos_stichtag I |
||||||
|
|
||||||
|
WHERE I.appl_key='2' --Prüfungen tagesaktuell |
||||||
|
and vor_haupt_pruefung in ('H','V') |
||||||
|
and L.matrikel_nr <= ${matrikelnr_max} |
||||||
|
<#if matrikelnr_min != 0 > |
||||||
|
AND L.matrikel_nr >= ${matrikelnr_min} |
||||||
|
</#if> |
||||||
|
and sourcesystem=${Quellsystem_var} |
||||||
|
--hier noch keine Filterung aufs Startsemester, erst später |
||||||
|
; |
||||||
|
--denormalize: |
||||||
|
|
||||||
|
|
||||||
|
--TODO: Abschnitt=1 (Zwischenprüfung ermitteln) |
||||||
|
|
||||||
|
update tmp_abp_aggr set st_studium_nr=st_studium_nr_tmp |
||||||
|
--where studiengangstyp in ('ESG','MSG') |
||||||
|
; |
||||||
|
|
||||||
|
--für TSG die studium_nr aus dem MSG nachladen: |
||||||
|
update tmp_abp_aggr set st_studium_nr=A.degree_program_id, |
||||||
|
spo_version=A.spo_version |
||||||
|
from msg_abp A, sos_labzuord L |
||||||
|
where L.labnr=tmp_abp_aggr.leistungs_id |
||||||
|
and L.labnrzu=A.leistungs_id |
||||||
|
and tmp_abp_aggr.studiengangstyp='TSG' |
||||||
|
and tmp_abp_aggr.st_studium_nr is null; |
||||||
|
|
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET sem_d_abg_pruefung = ( |
||||||
|
SELECT min(tid) FROM semester S |
||||||
|
WHERE d_abg_pruefung BETWEEN S.sem_beginn AND S.sem_ende |
||||||
|
) |
||||||
|
WHERE d_abg_pruefung IS NOT NULL; |
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET sem_d_abg_pruefung_tsg = ( |
||||||
|
SELECT min(tid) FROM semester S |
||||||
|
WHERE d_abg_pruefung_tsg BETWEEN S.sem_beginn AND S.sem_ende |
||||||
|
) |
||||||
|
WHERE d_abg_pruefung_tsg IS NOT NULL; |
||||||
|
|
||||||
|
|
||||||
|
-- Wenn Datum nicht gefüllt ist, dann wird Originalsemester (psem) genommen: |
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET sem_d_abg_pruefung = sem_der_pruefung |
||||||
|
WHERE sem_d_abg_pruefung IS NULL; |
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET sem_d_abg_pruefung_tsg = sem_der_pruefung_tsg |
||||||
|
WHERE sem_d_abg_pruefung_tsg IS NULL; |
||||||
|
|
||||||
|
|
||||||
|
SELECT now(),'Persondaten ermitteln:' FROM xdummy; |
||||||
|
|
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET d_geburt =S.d_geburt, |
||||||
|
geschlecht = S.geschlecht, |
||||||
|
ca12_staat = S.ca12_staat, |
||||||
|
hzbart_int = S.hzbart |
||||||
|
FROM sos_sos S |
||||||
|
WHERE |
||||||
|
S.matrikel_nr = tmp_abp_aggr.matrikel_nr |
||||||
|
; |
||||||
|
|
||||||
|
update tmp_abp_aggr set alter = trunc((E.sem_beginn-tmp_abp_aggr.d_geburt) / 365.25 , 0) |
||||||
|
from semester E |
||||||
|
where E.tid=tmp_abp_aggr.sem_d_abg_pruefung |
||||||
|
and tmp_abp_aggr.studiengangstyp in ('ESG','MSG'); |
||||||
|
|
||||||
|
update tmp_abp_aggr set alter = trunc((E.sem_beginn-tmp_abp_aggr.d_geburt) / 365.25 , 0) |
||||||
|
from semester E |
||||||
|
where E.tid=tmp_abp_aggr.sem_d_abg_pruefung_tsg |
||||||
|
and tmp_abp_aggr.studiengangstyp='TSG'; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<#if SOS_MTKNR_EXT = 1> |
||||||
|
update tmp_abp_aggr set pseudonym=M.pseudonym |
||||||
|
from sos_mtknr_ext M where M.matrikel_nr = tmp_abp_aggr.matrikel_nr; |
||||||
|
|
||||||
|
</#if> |
||||||
|
|
||||||
|
SELECT now(),'hzbart ermitteln:' FROM xdummy; |
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr SET hzbart = ( |
||||||
|
SELECT grupp |
||||||
|
FROM k_hzbart |
||||||
|
WHERE hzbart = tmp_abp_aggr.hzbart_int |
||||||
|
); |
||||||
|
|
||||||
|
update tmp_abp_aggr set |
||||||
|
ort_der_hzb=S.hzbkfz |
||||||
|
from sos_sos S |
||||||
|
where S.matrikel_nr=tmp_abp_aggr.matrikel_nr |
||||||
|
and today() between S.gueltig_von and S.gueltig_bis |
||||||
|
and S.hzbkfzkz=0; |
||||||
|
update tmp_abp_aggr set |
||||||
|
staat_der_hzb=S.hzbkfz |
||||||
|
from sos_sos S |
||||||
|
where S.matrikel_nr=tmp_abp_aggr.matrikel_nr |
||||||
|
and today() between S.gueltig_von and S.gueltig_bis |
||||||
|
and S.hzbkfzkz=1; |
||||||
|
|
||||||
|
-- Tid-stg ermitteln: |
||||||
|
SELECT now(),'Tid-stg ermitteln:' FROM xdummy; |
||||||
|
|
||||||
|
-- erster Durchgang: alle Angaben stimmen überein |
||||||
|
-- [Vorsicht: ein gleichen Studiengängen an 2 Standorten kommen zwei Sätze raus. |
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET tid_stg = ( |
||||||
|
SELECT min(tid) |
||||||
|
FROM |
||||||
|
lehr_stg_ab L |
||||||
|
WHERE |
||||||
|
tmp_abp_aggr.ch30_fach = L.stg |
||||||
|
AND tmp_abp_aggr.ch39_vertief = L.vertfg |
||||||
|
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss |
||||||
|
AND tmp_abp_aggr.pversion = L.pversion |
||||||
|
AND tmp_abp_aggr.schwerpunkt = L.schwerpunkt |
||||||
|
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung |
||||||
|
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung |
||||||
|
AND L.kz_fach = tmp_abp_aggr.kz_fach |
||||||
|
AND L.stort = tmp_abp_aggr.stort |
||||||
|
AND L.stutyp = tmp_abp_aggr.stutyp |
||||||
|
); |
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET tid_stg = ( |
||||||
|
SELECT min(tid) |
||||||
|
FROM |
||||||
|
lehr_stg_ab L |
||||||
|
WHERE |
||||||
|
tmp_abp_aggr.ch30_fach = L.stg |
||||||
|
AND tmp_abp_aggr.ch39_vertief = L.vertfg |
||||||
|
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss |
||||||
|
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung |
||||||
|
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung |
||||||
|
AND L.kz_fach = tmp_abp_aggr.kz_fach |
||||||
|
AND L.stort = tmp_abp_aggr.stort |
||||||
|
AND L.stutyp = tmp_abp_aggr.stutyp |
||||||
|
) |
||||||
|
WHERE tid_stg IS NULL; |
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET tid_stg = ( |
||||||
|
SELECT min(tid) |
||||||
|
FROM |
||||||
|
lehr_stg_ab L |
||||||
|
WHERE |
||||||
|
tmp_abp_aggr.ch30_fach = L.stg |
||||||
|
AND tmp_abp_aggr.ch39_vertief = L.vertfg |
||||||
|
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss |
||||||
|
AND tmp_abp_aggr.pversion = L.pversion |
||||||
|
AND tmp_abp_aggr.schwerpunkt = L.schwerpunkt |
||||||
|
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung |
||||||
|
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung |
||||||
|
AND L.kz_fach = tmp_abp_aggr.kz_fach |
||||||
|
AND L.stutyp = tmp_abp_aggr.stutyp |
||||||
|
) |
||||||
|
WHERE tid_stg IS NULL; |
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET tid_stg = ( |
||||||
|
SELECT min(tid) |
||||||
|
FROM |
||||||
|
lehr_stg_ab L |
||||||
|
WHERE |
||||||
|
tmp_abp_aggr.ch30_fach = L.stg |
||||||
|
AND tmp_abp_aggr.ch39_vertief = L.vertfg |
||||||
|
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss |
||||||
|
AND tmp_abp_aggr.schwerpunkt = L.schwerpunkt |
||||||
|
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung |
||||||
|
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung |
||||||
|
AND L.kz_fach = tmp_abp_aggr.kz_fach |
||||||
|
AND L.stutyp = tmp_abp_aggr.stutyp |
||||||
|
) |
||||||
|
WHERE tid_stg IS NULL; |
||||||
|
|
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET tid_stg = ( |
||||||
|
SELECT min(tid) |
||||||
|
FROM |
||||||
|
lehr_stg_ab L |
||||||
|
WHERE |
||||||
|
tmp_abp_aggr.ch30_fach = L.stg |
||||||
|
AND tmp_abp_aggr.ch39_vertief = L.vertfg |
||||||
|
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss |
||||||
|
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung |
||||||
|
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung |
||||||
|
AND L.kz_fach = tmp_abp_aggr.kz_fach |
||||||
|
AND L.stutyp = tmp_abp_aggr.stutyp |
||||||
|
) |
||||||
|
WHERE tid_stg IS NULL; |
||||||
|
|
||||||
|
--jetzt ohne stutyp: |
||||||
|
UPDATE tmp_abp_aggr |
||||||
|
SET tid_stg = ( |
||||||
|
SELECT min(tid) |
||||||
|
FROM |
||||||
|
lehr_stg_ab L |
||||||
|
WHERE |
||||||
|
tmp_abp_aggr.ch30_fach = L.stg |
||||||
|
AND tmp_abp_aggr.ch39_vertief = L.vertfg |
||||||
|
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss |
||||||
|
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung |
||||||
|
---AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung |
||||||
|
AND L.kz_fach = tmp_abp_aggr.kz_fach |
||||||
|
--AND L.stutyp = tmp_abp_aggr.stutyp |
||||||
|
) |
||||||
|
WHERE tid_stg IS NULL; |
||||||
|
|
||||||
|
insert into sos_pruefrout |
||||||
|
( |
||||||
|
tabelle, |
||||||
|
tabelle_sos, |
||||||
|
matrikel_nr, |
||||||
|
semester, |
||||||
|
problem, |
||||||
|
aktion |
||||||
|
) |
||||||
|
select |
||||||
|
'msg_abp_aggr', |
||||||
|
'lab', |
||||||
|
matrikel_nr, |
||||||
|
bezugssemester, |
||||||
|
'Studiengang unbekannt, Hauptprüfung wird gelöscht', |
||||||
|
'Warnung' |
||||||
|
from tmp_abp_aggr |
||||||
|
where tid_stg is null |
||||||
|
and bezugssemester >= ${K_SOS_start_lab} |
||||||
|
; |
||||||
|
|
||||||
|
update tmp_abp_aggr set regel=L.regel |
||||||
|
from lehr_stg_ab L |
||||||
|
where L.tid=tmp_abp_aggr.tid_stg; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- neu zu ladende Datensätze aus der 'msg_abp_aggr' entfernen |
||||||
|
DELETE FROM |
||||||
|
msg_abp_aggr |
||||||
|
WHERE |
||||||
|
--Hauptprüfungen bei Stichtagsbezug nur laden wenn Startsemester gesetzt ist, |
||||||
|
--Tagesaktuelle Daten werden immer geladen: |
||||||
|
( |
||||||
|
bezugssemester >= ${K_SOS_start_lab} |
||||||
|
AND sourcesystem = ${Quellsystem_var} |
||||||
|
AND bezugssemester >= ( |
||||||
|
SELECT T.einfriersemester |
||||||
|
FROM sos_stichtag T |
||||||
|
WHERE T.tid = msg_abp_aggr.stichtag |
||||||
|
) |
||||||
|
) |
||||||
|
OR |
||||||
|
( |
||||||
|
stichtag = ${stichtag_tagesaktuell_var} |
||||||
|
AND sourcesystem = ${Quellsystem_var} |
||||||
|
AND bezugssemester >= ( |
||||||
|
SELECT T.einfriersemester |
||||||
|
FROM sos_stichtag T |
||||||
|
WHERE T.tid = msg_abp_aggr.stichtag |
||||||
|
) |
||||||
|
) |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
-- Zuerst stichtagsbezogen füllen |
||||||
|
SELECT now(),'Prüfungsdatum nach Stichtag?' FROM xdummy; |
||||||
|
|
||||||
|
INSERT INTO msg_abp_aggr( |
||||||
|
${target_fields_except_stichtag} , |
||||||
|
stichtag |
||||||
|
) |
||||||
|
SELECT |
||||||
|
${target_fields_except_stichtag} , |
||||||
|
D.stichtag |
||||||
|
FROM tmp_abp_aggr P, sos_stichtag ST, sos_stichtag_datum D |
||||||
|
WHERE |
||||||
|
ST.tid = D.stichtag |
||||||
|
AND D.semester = P.bezugssemester |
||||||
|
AND ST.stichtagsart = 'Prüfungen' |
||||||
|
AND ( |
||||||
|
ST.appl_key NOT IN ('2', '3') |
||||||
|
OR ST.appl_key IS NULL |
||||||
|
) --(2,3) sind "kein Stichtag/parstg-Stichtag" |
||||||
|
-- Hauptprüfungen nur laden wenn Startsemester gesetzt ist, |
||||||
|
AND P.bezugssemester >= ${K_SOS_start_lab} |
||||||
|
|
||||||
|
AND P.bezugssemester >= ST.einfriersemester |
||||||
|
and D.datum >= P.pdatumsfeld; |
||||||
|
|
||||||
|
|
||||||
|
-- Nur die tagesaktuellen Zahlen, haben in Stichtag eine 2 |
||||||
|
SELECT now(),'Nun die tagesaktuallen Zahlen' FROM xdummy; |
||||||
|
|
||||||
|
INSERT INTO msg_abp_aggr( |
||||||
|
${target_fields_except_stichtag} , |
||||||
|
stichtag |
||||||
|
) |
||||||
|
SELECT |
||||||
|
${target_fields_except_stichtag} , |
||||||
|
ST.tid as stichtag |
||||||
|
FROM |
||||||
|
tmp_abp_aggr P, sos_stichtag ST |
||||||
|
WHERE |
||||||
|
${stichtag_tagesaktuell} = ST.tid |
||||||
|
AND bezugssemester >= ST.einfriersemester |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DROP TABLE tmp_abp_aggr; |
||||||
|
|
||||||
|
SELECT |
||||||
|
now(), |
||||||
|
'Anzahl Sätze in msg_abp_aggr:'::CHAR(30), |
||||||
|
count(*) |
||||||
|
FROM msg_abp_aggr |
||||||
|
GROUP BY 1,2; |
||||||
|
|
||||||
|
</#if> |
||||||
@ -0,0 +1,626 @@ |
|||||||
|
--freemarker template |
||||||
|
|
||||||
|
--(c) 2024 Daniel Quathamer |
||||||
|
<sqlvars> |
||||||
|
<sqlvar name = "p_pruef_sem_zahl_decimal_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'pruef_sem_zahl_decimal'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "p_start_pos_sem_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'Start_POS_Semester'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "matrikelnr_min_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'matrikelnr_min'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "matrikelnr_max_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'matrikelnr_max'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "p_promotion_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'SOS_status_prom'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "stichtag_tagesaktuell_var"> |
||||||
|
SELECT tid FROM sos_stichtag WHERE appl_key = '2'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "SOS_MTKNR_EXT"> |
||||||
|
SELECT 1 FROM xdummy WHERE 0 != |
||||||
|
(SELECT count(*) FROM konstanten WHERE beschreibung = 'SOS_MTKNR_EXT' AND apnr = 1) |
||||||
|
UNION |
||||||
|
SELECT 0 FROM xdummy WHERE 0 = |
||||||
|
(SELECT count(*) FROM konstanten WHERE beschreibung = 'SOS_MTKNR_EXT' AND apnr = 1); |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name = "Quellsystem_var"> |
||||||
|
SELECT apnr FROM konstanten WHERE beschreibung = 'SOS_Quellsystem'; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="istTrimester"> |
||||||
|
select 1 from xdummy where 3=(select max(mod(tid,10)) from semester) |
||||||
|
union |
||||||
|
select 0 from xdummy where 3!=(select max(mod(tid,10)) from semester) |
||||||
|
; |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="SOS_start_lab_aggr_var"> |
||||||
|
select apnr from konstanten where beschreibung='SOS_start_lab_gew' |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="gewichtungenanzahl">select count(*) from sos_gewichtungsvariante; -- für Anpassungen der Sichten im Konnektorlauf genutzt |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="gewichtungen" type="hashsequence"><![CDATA[select id from sos_gewichtungsvariante where 1=1 |
||||||
|
/* and id=<<Gewichtungsvariante>> */ |
||||||
|
/* union select -1 from xdummy where <<Gewichtungsvariante>>=-1 */ ]]></sqlvar> |
||||||
|
|
||||||
|
<sqlvar name="semester" type="hashsequence"><![CDATA[select distinct sem_der_pruefung as id from msg_abp_aggr where 1=1 |
||||||
|
/*and sem_der_pruefung in (<<Semester>>) */ |
||||||
|
<#if !Maskennummer?exists>and sem_der_pruefung>=${K_SOS_start_lab_gew}</#if> |
||||||
|
order by 1 desc]]> </sqlvar> |
||||||
|
<sqlvar name="stichtage" type="hashsequence"><![CDATA[select tid as id from sos_stichtag where stichtagsart='Prüfungen' /* and tid in (<<Stichtag>>) */]]></sqlvar> |
||||||
|
<sqlvar name="gewichtungsregeln" type="hashsequence"><![CDATA[SELECT id,name, |
||||||
|
student_weighting_variant_id, |
||||||
|
sortorder, |
||||||
|
weight, |
||||||
|
k_student_weighting_weight_usage_type_id, |
||||||
|
k_student_weighting_action_type_id, |
||||||
|
weighting_ident_operator_id, |
||||||
|
weighting_ident_list, |
||||||
|
new_weighting_ident, |
||||||
|
degree_counter_operator_id, |
||||||
|
degree_counter_list, --studiengang_nr |
||||||
|
new_degree_counter, |
||||||
|
subject_counter_operator_id, |
||||||
|
subject_counter_list, --fach_nr |
||||||
|
new_subject_counter, |
||||||
|
subject_count_operator_id,--faecher anzahl |
||||||
|
subject_count_list, |
||||||
|
degree_count_operator_id, -- abschluss anzahl |
||||||
|
degree_count_list, |
||||||
|
ects_operator_id, |
||||||
|
ects_list, |
||||||
|
newects, |
||||||
|
teaching_unit_operator_id, |
||||||
|
teaching_unit_list, --lehr |
||||||
|
new_teaching_unit, |
||||||
|
department_operator_id, |
||||||
|
department_list, --fb |
||||||
|
new_department, |
||||||
|
subject_operator_id, |
||||||
|
subject_list, --stg |
||||||
|
new_subject, |
||||||
|
degree_operator_id, |
||||||
|
degree_list, --abschluss |
||||||
|
new_degree, |
||||||
|
subject_indicator_operator_id, |
||||||
|
subject_indicator_list, --kz_fach |
||||||
|
new_subject_indicator, |
||||||
|
type_of_study_operator_id, |
||||||
|
type_of_study_list, --stuart |
||||||
|
new_type_of_study, |
||||||
|
form_of_study_operator_id, |
||||||
|
form_of_study_list, -- stufrm |
||||||
|
new_form_of_study |
||||||
|
FROM sos_gewichtungregel where 1=1 |
||||||
|
/* and id in (<<Regeln>>) */ |
||||||
|
order by student_weighting_variant_id,sortorder;]]> |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="sembez_daten">select tid from sos_stichtag where appl_key='5';</sqlvar> |
||||||
|
</sqlvars> |
||||||
|
|
||||||
|
-- Falls es Konstanten nicht gibt, Defaultwert: |
||||||
|
<#assign p_start_pos_sem = 19001 /> |
||||||
|
<#if p_start_pos_sem_var?exists && p_start_pos_sem_var?string?length > 0> |
||||||
|
<#assign p_start_pos_sem = p_start_pos_sem_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
-- Sollen Fachsem. dezimal berechnet werden, d.h. relativ zum Prüfungsdatum? |
||||||
|
-- Falls Variable nicht belegt, default 0 (Ganzzahlig) |
||||||
|
<#assign p_pruef_sem_zahl_decimal = 0 /> |
||||||
|
<#if p_pruef_sem_zahl_decimal_var?exists && p_pruef_sem_zahl_decimal_var?string?length > 0> |
||||||
|
<#assign p_pruef_sem_zahl_decimal = p_pruef_sem_zahl_decimal_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign matrikelnr_min = 0 /> |
||||||
|
<#if matrikelnr_min_var?exists && matrikelnr_min_var?string?length > 0> |
||||||
|
<#assign matrikelnr_min = matrikelnr_min_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign matrikelnr_max = 2147483647 /> |
||||||
|
<#if matrikelnr_max_var?exists && matrikelnr_max_var?string?length > 0> |
||||||
|
<#assign matrikelnr_max = matrikelnr_max_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign p_promotion = 6 /> |
||||||
|
<#if p_promotion_var?exists && p_promotion_var?string?length > 0> |
||||||
|
<#assign p_promotion = p_promotion_var /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign stichtag_tagesaktuell = 0 /> |
||||||
|
<#if stichtag_tagesaktuell_var?exists && stichtag_tagesaktuell_var?string?length > 0> |
||||||
|
<#assign stichtag_tagesaktuell = stichtag_tagesaktuell_var /> |
||||||
|
</#if> |
||||||
|
<#if istTrimester==1> |
||||||
|
<#assign Trimester="true" /> |
||||||
|
<#else> |
||||||
|
<#assign Trimester="false" /> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign bezugssemester_cond="(case when part='TSAB' then sem_der_pruefung_exa else sem_der_pruefung end)" /> |
||||||
|
<#assign pdatumsfeld_cond="(case when part='TSAB' then d_abg_pruefung_exa else d_abg_pruefung end)" /> |
||||||
|
|
||||||
|
<#assign target_fields_except_stichtag_summe=" matrikel_nr, |
||||||
|
alter, |
||||||
|
geschlecht, |
||||||
|
ca12_staat, |
||||||
|
ort_der_hzb, |
||||||
|
staat_der_hzb, |
||||||
|
hzbart_int, |
||||||
|
hzbart, |
||||||
|
pseudonym, |
||||||
|
sem_der_pruefung, |
||||||
|
sem_der_pruefung_tsg, |
||||||
|
sem_d_abg_pruefung, |
||||||
|
sem_d_abg_pruefung_tsg, |
||||||
|
d_abg_pruefung, |
||||||
|
d_abg_pruefung_tsg, |
||||||
|
bezugssemester, |
||||||
|
tid_stg, |
||||||
|
stufrm, |
||||||
|
stuart, |
||||||
|
--regel, |
||||||
|
pordnr, |
||||||
|
studiengang_nr, |
||||||
|
fach_nr, |
||||||
|
st_studium_nr, |
||||||
|
st_studium_nr_tsg, |
||||||
|
fach_sem_zahl, |
||||||
|
fach_sem_zahl_tsg, |
||||||
|
part, |
||||||
|
leistungs_id, |
||||||
|
pnr, |
||||||
|
pversuch, |
||||||
|
sourcesystem, |
||||||
|
pvermerk, |
||||||
|
note, |
||||||
|
note_tsg, |
||||||
|
notenskala, |
||||||
|
pstatus, |
||||||
|
pstatus_tsg, |
||||||
|
prueck, |
||||||
|
--ects, |
||||||
|
ects_tsg, |
||||||
|
studiengangstyp, |
||||||
|
abschnitt, |
||||||
|
fach_abschlussarbeit |
||||||
|
" /> |
||||||
|
|
||||||
|
|
||||||
|
<#if Quellsystem_var=15> |
||||||
|
|
||||||
|
|
||||||
|
SELECT 'Matrikelnr. Max: ${matrikelnr_max} '::CHAR(30) FROM xdummy; |
||||||
|
SELECT 'Matrikelnr. Min: ${matrikelnr_min} '::CHAR(30) FROM xdummy; |
||||||
|
SELECT 'SOS_MTKNR_EXT: ${SOS_MTKNR_EXT} '::CHAR(30) FROM xdummy; |
||||||
|
SELECT 'Startsemester ${K_SOS_start_lab}'::CHAR(30) FROM xdummy; |
||||||
|
SELECT 'Startsemester Vorsemester ${K_SOS_start_lab_vorsemester}'::CHAR(30) FROM xdummy; |
||||||
|
|
||||||
|
SELECT now(),'Anzahl Sätze in msg_abp_aggr_gew:'::CHAR(30),count(*) FROM msg_abp_aggr GROUP BY 1,2; |
||||||
|
|
||||||
|
<#macro sos_gew_restrict type field operator values> |
||||||
|
and ( |
||||||
|
<#list values?split("|") as item> |
||||||
|
${field}${operator}<#if type=='char'>'</#if>${item}<#if type=='char'>'</#if> <#if item_has_next> <#if operator="<>">and<#else>or</#if> </#if></#list> |
||||||
|
) |
||||||
|
</#macro> |
||||||
|
|
||||||
|
<#macro sos_gew_restrictions regel> |
||||||
|
-- has_content liefert seltsamerweise false auch wenn Gewicht Wert enthält, daher hier mit length gearbeitet |
||||||
|
where 1=1 |
||||||
|
<#if regel.weighting_ident_list?length>0> <@sos_gew_restrict type="char" field="gewichtungs_ident" operator=regel.weighting_ident_operator_id values=regel.weighting_ident_list/></#if> |
||||||
|
<#if regel.degree_counter_list?length>0> <@sos_gew_restrict type="integer" field="studiengang_nr" operator=regel.degree_counter_operator_id values=regel.degree_counter_list/></#if> |
||||||
|
<#if regel.subject_counter_list?length>0> <@sos_gew_restrict type="integer" field="fach_nr" operator=regel.subject_counter_operator_id values=regel.subject_counter_list/></#if> |
||||||
|
<#if regel.subject_count_list?length>0> <@sos_gew_restrict type="integer" field="fachanzahl" operator=regel.subject_count_operator_id values=regel.subject_count_list/></#if> |
||||||
|
<#if regel.degree_count_list?length>0> <@sos_gew_restrict type="integer" field="abschlussanzahl" operator=regel.degree_count_operator_id values=regel.degree_count_list/></#if> |
||||||
|
<#if regel.ects_list?length>0> <@sos_gew_restrict type="integer" field="ects" operator=regel.ects_operator_id values=regel.ects_list/></#if> |
||||||
|
<#if regel.teaching_unit_list?length>0> <@sos_gew_restrict type="char" field="lehr" operator=regel.teaching_unit_operator_id values=regel.teaching_unit_list/></#if> |
||||||
|
<#if regel.department_list?length>0> <@sos_gew_restrict type="char" field="fb" operator=regel.department_operator_id values=regel.department_list/></#if> |
||||||
|
<#if regel.subject_list?length>0> <@sos_gew_restrict type="char" field="ch30_fach" operator=regel.subject_operator_id values=regel.subject_list/></#if> |
||||||
|
<#if regel.degree_list?length>0> <@sos_gew_restrict type="char" field="ch35_ang_abschluss" operator=regel.degree_operator_id values=regel.degree_list/></#if> |
||||||
|
<#if regel.subject_indicator_list?length>0> <@sos_gew_restrict type="char" field="kz_fach" operator=regel.subject_indicator_operator_id values=regel.subject_indicator_list/></#if> |
||||||
|
<#if regel.type_of_study_list?length>0> <@sos_gew_restrict type="char" field="stuart" operator=regel.type_of_study_operator_id values=regel.type_of_study_list/></#if> |
||||||
|
<#if regel.form_of_study_list?length>0> <@sos_gew_restrict type="char" field="stufrm" operator=regel.form_of_study_operator_id values=regel.form_of_study_list/></#if> |
||||||
|
</#macro> |
||||||
|
|
||||||
|
<#macro sos_gew_updates table regel> |
||||||
|
<#switch regel.k_student_weighting_action_type_id?number> |
||||||
|
<#case 5> |
||||||
|
-- Normierung je Matrikelnummer |
||||||
|
truncate table tmp_zaehlung; |
||||||
|
insert into tmp_zaehlung(matrikel_nr,gewichtsumme) |
||||||
|
select matrikel_nr,sum(gewicht) from ${table} group by 1; |
||||||
|
update ${table} set gewichtsumme=(select sum(gewichtsumme) from tmp_zaehlung where ${table}.matrikel_nr=tmp_zaehlung.matrikel_nr); |
||||||
|
update ${table} set gewicht= gewicht/gewichtsumme <@sos_gew_restrictions regel=regel/> and gewichtsumme!=0; |
||||||
|
<#break> |
||||||
|
<#case 4> |
||||||
|
-- Normierung je Matrikelnummer und Fach |
||||||
|
truncate table tmp_zaehlung; |
||||||
|
insert into tmp_zaehlung(matrikel_nr,studiengang_nr,gewichtsumme) |
||||||
|
select matrikel_nr,studiengang_nr,sum(gewicht) from ${table} group by 1,2; |
||||||
|
update ${table} set gewichtsumme_pro_abschluss=(select sum(gewichtsumme) from tmp_zaehlung where ${table}.matrikel_nr=tmp_zaehlung.matrikel_nr |
||||||
|
and ${table}.studiengang_nr=tmp_zaehlung.studiengang_nr); |
||||||
|
update ${table} set gewicht=gewicht/gewichtsumme_pro_abschluss <@sos_gew_restrictions regel=regel/> and gewichtsumme_pro_abschluss!=0; |
||||||
|
<#break> |
||||||
|
<#default> |
||||||
|
<#if regel.weight?length>0> |
||||||
|
update ${table} set gewicht=<#if regel.k_student_weighting_weight_usage_type_id?number=2>gewicht*</#if>${regel.weight?string?replace(',','.')} <@sos_gew_restrictions regel=regel/>; |
||||||
|
</#if> |
||||||
|
</#switch> |
||||||
|
|
||||||
|
<#assign new_a_needed=false/> |
||||||
|
update ${table} set dummy1=0 |
||||||
|
<#if regel.new_weighting_ident?length>0> , gewichtungs_ident='${regel.new_weighting_ident?replace("\x0027","\x0027\x0027")}'</#if> |
||||||
|
<#if regel.new_degree_counter?length>0>,studiengang_nr=${regel.new_degree_counter} <#assign new_a_needed=true/></#if> |
||||||
|
<#if regel.new_subject_counter?length>0>, fach_nr=${regel.new_subject_counter} <#assign new_a_needed=true/></#if> |
||||||
|
<#if regel.newects?length>0> , ects=${regel.newects} <#assign new_a_needed=true/> </#if> |
||||||
|
<#if regel.new_degree?length>0> , ch35_ang_abschluss='${regel.new_degree}' <#assign new_a_needed=true/> </#if> |
||||||
|
<#if regel.new_teaching_unit?length>0> , lehr='${regel.new_teaching_unit}' <#assign new_a_needed=true/> </#if> |
||||||
|
<#if regel.new_department?length>0> , fb='${regel.new_department}' <#assign new_a_needed=true/> </#if> |
||||||
|
<#if regel.new_subject?length>0> ,ch30_fach='${regel.new_subject}' <#assign new_a_needed=true/></#if> |
||||||
|
<#if regel.new_subject_indicator?length>0> , kz_fach='${regel.new_subject_indicator}' <#assign new_a_needed=true/></#if> |
||||||
|
<#if regel.new_type_of_study?length>0> , stuart='${regel.new_type_of_study}' <#assign new_a_needed=true/> </#if> |
||||||
|
<#if regel.new_form_of_study?length>0> ,stufrm='${regel.new_form_of_study}' <#assign new_a_needed=true/> </#if> |
||||||
|
<#if new_a_needed>, artifical_id=null</#if> |
||||||
|
,dummy2=0 <@sos_gew_restrictions regel=regel/>; |
||||||
|
|
||||||
|
</#macro> |
||||||
|
|
||||||
|
<#macro update_art_id> |
||||||
|
'fb:'||fb||'l:'||lehr||'stg:'||ch30_fach||'ab:'||ch35_ang_abschluss||'v:'||trim(nvl(ch39_vertief,'n'::char(1)))||'s:'||trim(nvl(schwerpunkt,'n'::char(1)))||'p:'||pversion||'k:'||trim(nvl(kz_fach,'n'::char(1)))||'s:'||trim(nvl(stort,'n'::char(1)))||'von:'||semester_von||'bis:'||semester_bis |
||||||
|
</#macro> |
||||||
|
|
||||||
|
<#compress> --entfernt whitespace |
||||||
|
|
||||||
|
<#if !Maskennummer?exists> -- wenn das Script nachts ausgeführt wird |
||||||
|
--delete from sos_stg_aggr where summe=0; |
||||||
|
<#assign durchfuehrungsart="konnektorlauf"/> |
||||||
|
<#else> |
||||||
|
<#assign durchfuehrungsart="<<Art der Durchführung>>"?replace("'","")/> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#assign target_lehr_stg_ab="lehr_stg_ab_gew"/> |
||||||
|
|
||||||
|
<#if "Tabellenerzeugung"!=""> |
||||||
|
|
||||||
|
<#if !Maskennummer?exists> |
||||||
|
truncate table msg_abp_aggr_gew; --wenn im Browser läuft wird unten sicherheitshalber noch mal delete pro gewichtung/semester/stichtag gemacht |
||||||
|
</#if> |
||||||
|
create temp table tmp_regelord (tid serial,dummy integer); |
||||||
|
create temp table tmp_zaehlung (matrikel_nr integer,abschlussanzahl integer default 0,studiengang_nr integer,fachanzahl integer default 0, |
||||||
|
gewichtsumme decimal(19,6)) <@informixnolog/>; |
||||||
|
create index tmp_iz1 on tmp_zaehlung (matrikel_nr); |
||||||
|
|
||||||
|
CREATE TEMP TABLE tmp_sos |
||||||
|
( |
||||||
|
--aus msg_abp_aggr |
||||||
|
matrikel_nr INTEGER , |
||||||
|
alter decimal(14,2) , |
||||||
|
geschlecht SMALLINT , |
||||||
|
ca12_staat SMALLINT , |
||||||
|
ort_der_hzb SMALLINT , |
||||||
|
staat_der_hzb INTEGER , |
||||||
|
hzbart_int CHAR(10) , |
||||||
|
hzbart SMALLINT , |
||||||
|
pseudonym VARCHAR(255) , |
||||||
|
sem_der_pruefung SMALLINT , |
||||||
|
sem_der_pruefung_tsg SMALLINT , |
||||||
|
sem_d_abg_pruefung SMALLINT , |
||||||
|
sem_d_abg_pruefung_tsg SMALLINT , |
||||||
|
bezugssemester SMALLINT , |
||||||
|
d_abg_pruefung DATE , |
||||||
|
d_abg_pruefung_tsg DATE , |
||||||
|
stichtag INTEGER , |
||||||
|
tid_stg INTEGER , |
||||||
|
stufrm CHAR(10) , |
||||||
|
stuart CHAR(10) , |
||||||
|
regel SMALLINT , |
||||||
|
pordnr INTEGER , |
||||||
|
studiengang_nr SMALLINT , |
||||||
|
fach_nr SMALLINT , |
||||||
|
st_studium_nr INTEGER , |
||||||
|
st_studium_nr_tsg INTEGER , |
||||||
|
fach_sem_zahl decimal(10,2) , |
||||||
|
fach_sem_zahl_tsg SMALLINT , |
||||||
|
abschnitt SMALLINT , |
||||||
|
studiengangstyp CHAR(10) , |
||||||
|
part CHAR(10) , |
||||||
|
leistungs_id INTEGER , |
||||||
|
pnr INTEGER , |
||||||
|
pversuch INTEGER , |
||||||
|
sourcesystem INTEGER , |
||||||
|
pvermerk CHAR(10) , |
||||||
|
note decimal(8,2) , |
||||||
|
note_tsg decimal(8,2) , |
||||||
|
notenskala CHAR(10) , |
||||||
|
pstatus CHAR(10) , |
||||||
|
pstatus_tsg CHAR(10) , |
||||||
|
prueck SMALLINT , |
||||||
|
ects FLOAT , |
||||||
|
ects_tsg FLOAT , |
||||||
|
summe INTEGER , |
||||||
|
ch30_fach char(10), |
||||||
|
ch35_ang_abschluss char(10), |
||||||
|
ch39_vertief char(10), |
||||||
|
schwerpunkt char(10), |
||||||
|
pversion integer, |
||||||
|
kz_fach char(10), |
||||||
|
stort char(10), |
||||||
|
lehr char(10), |
||||||
|
-- weitere Feld aus lehr_stg_ab |
||||||
|
semester_von integer, |
||||||
|
semester_bis integer , |
||||||
|
text char(255), |
||||||
|
fach_zaehler smallint,anteil decimal(3,2), abstgvnr integer, |
||||||
|
--bis hier |
||||||
|
stichtagname varchar(255), |
||||||
|
fachname varchar(255), |
||||||
|
abschlussname varchar(255), |
||||||
|
gewicht decimal(19,6) default 1, |
||||||
|
gewichtungs_ident varchar(255), |
||||||
|
original_fb char(10),-- falls der FB geändert wird, wird hiermit kontrolliert, ob überhaupt auf einen anderen FB geändert |
||||||
|
fb char(10), |
||||||
|
fachanzahl integer, |
||||||
|
abschlussanzahl integer, |
||||||
|
--datensatzanzahl integer, |
||||||
|
gewichtsumme decimal(19,6), |
||||||
|
gewichtsumme_pro_abschluss decimal(19,6), |
||||||
|
regelord integer default 0, |
||||||
|
dummy1 smallint, |
||||||
|
dummy2 smallint, |
||||||
|
artifical_id varchar(255), |
||||||
|
fach_abschlussarbeit char(10) |
||||||
|
) |
||||||
|
; |
||||||
|
create index tmp_ix0 on tmp_sos (gewichtungs_ident); |
||||||
|
create index tmp_ix1 on tmp_sos (studiengang_nr); |
||||||
|
create index tmp_ix2 on tmp_sos (fach_nr); |
||||||
|
create index tmp_ix3 on tmp_sos (fachanzahl); |
||||||
|
create index tmp_ix4 on tmp_sos (abschlussanzahl); |
||||||
|
create index tmp_ix5 on tmp_sos (ects); |
||||||
|
create index tmp_ix7 on tmp_sos (fb); |
||||||
|
|
||||||
|
create index tmp_ix11 on tmp_sos (stuart); |
||||||
|
create index tmp_ix12 on tmp_sos (stufrm); |
||||||
|
create index tmp_ix13 on tmp_sos (matrikel_nr); |
||||||
|
|
||||||
|
create index tmp_ix15 on tmp_sos (artifical_id); |
||||||
|
</#if> --wenn "Tabellenerzeugung"!="" |
||||||
|
|
||||||
|
|
||||||
|
<#foreach gewichtung in gewichtungen> |
||||||
|
--war hier:truncate table tmp_sos; |
||||||
|
select setval('${target_lehr_stg_ab}_tid_neu_seq', (select max(tid)+1 from ${target_lehr_stg_ab})); |
||||||
|
<#foreach einStichtag in stichtage> |
||||||
|
select 'Stichtag: ${einStichtag.id}' from xdummy; |
||||||
|
|
||||||
|
<#foreach einSemester in semester> |
||||||
|
select 'Semester: ${einSemester.id}' from xdummy; |
||||||
|
--jetzt hier |
||||||
|
truncate table tmp_sos; |
||||||
|
<#if "tmp_sos fuellen"!=""> |
||||||
|
INSERT INTO tmp_sos ( |
||||||
|
${target_fields_except_stichtag_summe}, |
||||||
|
summe, |
||||||
|
ch30_fach, |
||||||
|
ch35_ang_abschluss, |
||||||
|
ch39_vertief, |
||||||
|
schwerpunkt, |
||||||
|
pversion , |
||||||
|
stort, |
||||||
|
kz_fach, |
||||||
|
lehr , |
||||||
|
original_fb, |
||||||
|
fb, |
||||||
|
semester_von, |
||||||
|
semester_bis, |
||||||
|
text, |
||||||
|
fach_zaehler , |
||||||
|
anteil, |
||||||
|
abstgvnr, |
||||||
|
--ects, |
||||||
|
gewichtungs_ident --, |
||||||
|
--stutyp |
||||||
|
) |
||||||
|
SELECT ${target_fields_except_stichtag_summe}, |
||||||
|
summe, |
||||||
|
L.stg as ch30_fach, |
||||||
|
L.abschluss as ch35_ang_abschluss, |
||||||
|
L.vertfg as ch39_vertief, |
||||||
|
L.schwerpunkt, |
||||||
|
L.pversion , |
||||||
|
L.stort, |
||||||
|
L.kz_fach, |
||||||
|
L.lehr , |
||||||
|
L.fb, |
||||||
|
L.fb, |
||||||
|
L.semester_von, |
||||||
|
L.semester_bis, |
||||||
|
L.text, |
||||||
|
L.fach_zaehler , |
||||||
|
L.anteil, |
||||||
|
L.abstgvnr, |
||||||
|
--L.ects, |
||||||
|
'Default' as gewichtungs_ident |
||||||
|
|
||||||
|
FROM msg_abp_aggr S, lehr_stg_ab_gew L |
||||||
|
WHERE |
||||||
|
S.abschnitt in (1,2) and --nur Haupt und Vorprüfungen |
||||||
|
<#assign semester_feld="bezugssemester" /> |
||||||
|
<#assign stichtag_filter="stichtag = "+ einStichtag.id/> |
||||||
|
|
||||||
|
<#if einStichtag.id?string = sembez_daten?string > |
||||||
|
<#assign semester_feld="bezugssemester" /> |
||||||
|
<#assign stichtag_filter="stichtag = 2" /> |
||||||
|
</#if> |
||||||
|
S.${semester_feld}=${einSemester.id} and |
||||||
|
${stichtag_filter} |
||||||
|
and S.tid_stg=L.tid |
||||||
|
<#if Maskennummer?exists&&"<<Studiengang>>"!=''> and 's_' || L.tid in <@printkeys Studiengang.allNeededKeysList/> </#if> |
||||||
|
<#if Maskennummer?exists&&"<<Abschluss>>"!=''> and L.abschluss in (<<Abschluss>>) </#if> |
||||||
|
<#if Maskennummer?exists&&"<<Fachkennz.>>"!=''> and L.kz_fach = <<Fachkennz.>> </#if> |
||||||
|
<#if Maskennummer?exists&&"<<Studienform>>"!=''> and stufrm = <<Studienform>> </#if> |
||||||
|
|
||||||
|
<#if Matrikelnr?exists> |
||||||
|
/* and matrikel_nr in (${Matrikelnr?replace("'","")}) -- <<Matrikelnr>>) */ |
||||||
|
</#if> |
||||||
|
; |
||||||
|
--TODO ects evtl direkt aus lehr_stg_ab |
||||||
|
update tmp_sos set artifical_id=<@update_art_id/> where artifical_id is null; |
||||||
|
|
||||||
|
</#if>--wenn "tmp_sos fuellen"!="" |
||||||
|
<#if gewichtung.id!=-1> -- -1 heisst keine Gewichtung (für reine Vorschau) |
||||||
|
|
||||||
|
<#foreach regel in gewichtungsregeln> |
||||||
|
<#if regel.student_weighting_variant_id=gewichtung.id> |
||||||
|
select 'Regel-ID:${regel.id}-${regel.name?replace("\x0027","\x0027\x0027")}' from xdummy; |
||||||
|
insert into tmp_regelord (dummy) values (1); |
||||||
|
truncate table tmp_zaehlung; |
||||||
|
--aus Performancegründen nur wenn abschluss/fach-anzahl benötigt wird |
||||||
|
<#if regel.degree_count_list?length>0||(Maskennummer?exists&&"<<Abschlussanzahl>>"!=''&&!"<<Abschlussanzahl>>"?starts_with('z.B.'))> |
||||||
|
insert into tmp_zaehlung (matrikel_nr,abschlussanzahl) |
||||||
|
select matrikel_nr,count(distinct studiengang_nr) from tmp_sos group by 1; |
||||||
|
update tmp_sos set abschlussanzahl=(select sum(abschlussanzahl) from tmp_zaehlung where tmp_sos.matrikel_nr=tmp_zaehlung.matrikel_nr); |
||||||
|
|
||||||
|
<#if Maskennummer?exists&&"<<Abschlussanzahl>>"!=''&&!"<<Abschlussanzahl>>"?starts_with('z.B.')> |
||||||
|
delete from tmp_sos where not (abschlussanzahl <<Abschlussanzahl>>); |
||||||
|
</#if> |
||||||
|
|
||||||
|
</#if> |
||||||
|
<#if regel.subject_count_list?length>0||(Maskennummer?exists&&"<<Fachanzahl>>"!=''&&!"<<Fachanzahl>>"?starts_with('z.B.'))> |
||||||
|
insert into tmp_zaehlung (matrikel_nr,studiengang_nr,fachanzahl) |
||||||
|
select matrikel_nr,studiengang_nr,count(distinct ch30_fach) from tmp_sos group by 1,2; |
||||||
|
update tmp_sos set fachanzahl=(select sum(fachanzahl) from tmp_zaehlung where tmp_sos.matrikel_nr=tmp_zaehlung.matrikel_nr and |
||||||
|
tmp_sos.studiengang_nr=tmp_zaehlung.studiengang_nr); |
||||||
|
<#if Maskennummer?exists&&"<<Fachanzahl>>"!=''&&!"<<Fachanzahl>>"?starts_with('z.B.')> |
||||||
|
delete from tmp_sos where not (fachanzahl <<Fachanzahl>>); |
||||||
|
</#if> |
||||||
|
</#if> |
||||||
|
<#switch regel.k_student_weighting_action_type_id?number> |
||||||
|
<#case 1> --überschreiben |
||||||
|
<@sos_gew_updates table='tmp_sos' regel=regel/>; |
||||||
|
<#break> |
||||||
|
<#case 2> --kopieren |
||||||
|
<@selectintotmp source="tmp_sos" target="tmp_kopie" select="*"> |
||||||
|
<@sos_gew_restrictions regel=regel/> |
||||||
|
--and sem_der_pruefung=${einSemester.id} |
||||||
|
--and stichtag=${einStichtag.id} |
||||||
|
</@selectintotmp> <@informixnolog/>; |
||||||
|
<@sos_gew_updates table='tmp_kopie' regel=regel/> |
||||||
|
|
||||||
|
update tmp_kopie set regelord=(select max(tid) from tmp_regelord); |
||||||
|
insert into tmp_sos select * from tmp_kopie; |
||||||
|
drop table tmp_kopie; |
||||||
|
<#break> |
||||||
|
<#case 3> --löschen |
||||||
|
delete from tmp_sos <@sos_gew_restrictions regel=regel/> ; |
||||||
|
<#break> |
||||||
|
|
||||||
|
<#case 4> |
||||||
|
-- Normierung nach Matrkelnr und Abschluss |
||||||
|
<@sos_gew_updates table='tmp_sos' regel=regel/>; |
||||||
|
<#break> |
||||||
|
<#case 5> |
||||||
|
-- Normierung nach Matrkelnr |
||||||
|
<@sos_gew_updates table='tmp_sos' regel=regel/>; |
||||||
|
|
||||||
|
<#break> |
||||||
|
</#switch> |
||||||
|
|
||||||
|
</#if> --wenn regel.student_weighting_variant_id=gewichtung.id |
||||||
|
</#foreach> |
||||||
|
</#if> --wenn gewichtung.id!=-1 |
||||||
|
|
||||||
|
<#if durchfuehrungsart="konnektorlauf"> |
||||||
|
update tmp_sos set artifical_id=<@update_art_id/> where artifical_id is null; |
||||||
|
update tmp_sos set tid_stg=(select min(tid) from lehr_stg_ab_gew where tmp_sos.artifical_id=lehr_stg_ab_gew.artifical_id |
||||||
|
-- bugfix #173885 |
||||||
|
and (lehr_stg_ab_gew.gewichtung_id is null or lehr_stg_ab_gew.gewichtung_id=${gewichtung.id}) |
||||||
|
); |
||||||
|
--Gewichtung füllen |
||||||
|
delete from msg_abp_aggr_gew where gewichtung_id=${gewichtung.id} and |
||||||
|
${semester_feld}=${einSemester.id} and stichtag=${einStichtag.id}; |
||||||
|
insert into msg_abp_aggr_gew ( ${target_fields_except_stichtag_summe}, |
||||||
|
stichtag, |
||||||
|
gewichtung_id, |
||||||
|
summe |
||||||
|
) |
||||||
|
select |
||||||
|
${target_fields_except_stichtag_summe}, |
||||||
|
${einStichtag.id} , |
||||||
|
${gewichtung.id}, |
||||||
|
gewicht |
||||||
|
from tmp_sos; |
||||||
|
|
||||||
|
</#if> |
||||||
|
</#foreach> --Schleife Semester |
||||||
|
</#foreach> --Schleife Stichtag |
||||||
|
</#foreach> --Schleife gewichtung |
||||||
|
</#compress> |
||||||
|
|
||||||
|
drop table tmp_regelord; |
||||||
|
|
||||||
|
<#if !Maskennummer?exists> |
||||||
|
drop table tmp_sos; drop table tmp_zaehlung; ANALYZE msg_abp_aggr_gew; |
||||||
|
</#if> |
||||||
|
<#if Maskennummer?exists> |
||||||
|
--dieser Block wird nur gebraucht für eine Vorschau bei denen aber Fachanzahl oder Abschlussanzahl eingeschränkt ist |
||||||
|
<#if "<<Gewichtungsvariante>>"=="'-1'"> |
||||||
|
<#foreach einStichtag in stichtage> |
||||||
|
<#foreach einSemester in semester> |
||||||
|
truncate table tmp_zaehlung; |
||||||
|
insert into tmp_zaehlung (matrikel_nr,abschlussanzahl) |
||||||
|
select matrikel_nr,count(distinct studiengang_nr) from tmp_sos |
||||||
|
where sem_der_pruefung = ${einSemester.id} and stichtag = ${einStichtag.id} |
||||||
|
group by 1; |
||||||
|
update tmp_sos set abschlussanzahl=(select sum(abschlussanzahl) from tmp_zaehlung where tmp_sos.matrikel_nr=tmp_zaehlung.matrikel_nr) |
||||||
|
where sem_der_pruefung = ${einSemester.id} and stichtag = ${einStichtag.id}; |
||||||
|
|
||||||
|
insert into tmp_zaehlung (matrikel_nr,studiengang_nr,fachanzahl) |
||||||
|
select matrikel_nr,studiengang_nr,count(distinct ch30_fach) from tmp_sos |
||||||
|
where sem_der_pruefung = ${einSemester.id} and stichtag = ${einStichtag.id} group by 1,2; |
||||||
|
update tmp_sos set fachanzahl=(select sum(fachanzahl) from tmp_zaehlung where tmp_sos.matrikel_nr=tmp_zaehlung.matrikel_nr and |
||||||
|
tmp_sos.studiengang_nr=tmp_zaehlung.studiengang_nr) |
||||||
|
where sem_der_pruefung = ${einSemester.id} and stichtag = ${einStichtag.id}; |
||||||
|
|
||||||
|
<#if "<<Fachanzahl>>"!=''&&!"<<Fachanzahl>>"?starts_with('z.B.')> |
||||||
|
delete from tmp_sos where not (fachanzahl <<Fachanzahl>>); |
||||||
|
</#if> |
||||||
|
<#if "<<Abschlussanzahl>>"!=''&&!"<<Abschlussanzahl>>"?starts_with('z.B.')> |
||||||
|
delete from tmp_sos where not (abschlussanzahl <<Abschlussanzahl>>); |
||||||
|
</#if> |
||||||
|
</#foreach> |
||||||
|
</#foreach> |
||||||
|
</#if> --Gewichtungsvariante -1 |
||||||
|
analyze tmp_sos; |
||||||
|
update tmp_sos set ch30_fach=(select L.stg from ${target_lehr_stg_ab} L where L.tid=tid_stg); |
||||||
|
update tmp_sos set kz_fach=(select L.kz_fach from ${target_lehr_stg_ab} L where L.tid=tid_stg); |
||||||
|
update tmp_sos set ch35_ang_abschluss=(select L.abschluss from ${target_lehr_stg_ab} L where L.tid=tid_stg); |
||||||
|
--update tmp_sos set gewichtungs_ident=null; |
||||||
|
update tmp_sos set fachname = (select druck from cifx where key = 30 and apnr = ch30_fach); |
||||||
|
update tmp_sos set abschlussname = (select druck from cifx where key = 35 and apnr = ch35_ang_abschluss); |
||||||
|
update tmp_sos set stichtagname=(select name from sos_stichtag where tmp_sos.stichtag=sos_stichtag.tid); |
||||||
|
update tmp_sos set fachname=nvl(fachname,''::char(1))||' Achtung kein passender Studiengang gefunden!' where tid_stg is null; |
||||||
|
update tmp_sos set fb=(select min(fb) from ${target_lehr_stg_ab} L where L.tid=tid_stg) where (fb is null or fb=''); |
||||||
|
update tmp_sos set lehr=(select min(lehr) from ${target_lehr_stg_ab} L where L.tid=tid_stg) where lehr is null; |
||||||
|
drop table tmp_zaehlung; |
||||||
|
</#if>--Maskennummer |
||||||
|
--Übertragung in sos_lab_aggr |
||||||
|
<#if durchfuehrungsart="konnektorlauf"> |
||||||
|
|
||||||
|
<#if Maskennummer?exists> |
||||||
|
select stichtagname,sem_der_pruefung,matrikel_nr,studiengang_nr,fach_nr,ch30_fach,fachname,kz_fach,ch35_ang_abschluss,abschlussname,stuart,stufrm,ects, |
||||||
|
round(gewicht,2), <#if durchfuehrungsart=="vorschau">gewichtungs_ident,</#if> lehr,fb from tmp_sos |
||||||
|
order by stichtagname,sem_der_pruefung,matrikel_nr,studiengang_nr,fach_nr,regelord; |
||||||
|
</#if> |
||||||
|
|
||||||
|
SELECT |
||||||
|
now(), |
||||||
|
'Anzahl Sätze in msg_abp_aggr_gew:'::CHAR(30), |
||||||
|
count(*) |
||||||
|
FROM msg_abp_aggr_gew |
||||||
|
GROUP BY 1,2; |
||||||
|
</#if> --konnektorlauf |
||||||
|
|
||||||
|
</#if>--sourcesystem CO |
||||||
@ -0,0 +1,45 @@ |
|||||||
|
160770^Köpfe oder Fälle ?^1^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag = 'Fälle';^ |
||||||
|
160771^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today()-365 between sem_beginn and sem_ende;^ |
||||||
|
160772^Studiengang^6^0^0^140^150^50^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^ ^ ^ |
||||||
|
160773^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^ ^ ^ |
||||||
|
160774^Stichtag Prüfungen^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen' order by 2;^ ^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen' and appl_key='2';^ |
||||||
|
160775^Prüfungsstatus^13^0^0^140^70^1^char^30^0^1^<<SQL>> select apnr,druck from sos_k_pstatus;^hidden^ ^ |
||||||
|
160776^Weitere Tabellen^123^0^0^140^140^10^char^30^0^1^<<SQL>> \ |
||||||
|
--freemarker template\ |
||||||
|
select name,string_not_null(caption) || ' - ' || name from sx_tables where name in ('dim_studiengang')\ |
||||||
|
<#if <<tablestylesheet>>!='tabelle_html_datenblatt.xsl'>\ |
||||||
|
and name in (select distinct tablename from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename=<<tablestylesheet>>)) \ |
||||||
|
</#if>\ |
||||||
|
order by 2^ ^ ^ |
||||||
|
160777^bis Fachsemester^20^350^-1^140^10^1^integer^30^0^0^^ ^ ^ |
||||||
|
160778^Studienabschnitt^12^330^-1^130^150^1^integer^4^1^1^<<SQL>> select tid, eintrag from studienabschnitt where tid <= 2 order by 1;^hidden^<<SQL>> select tid, eintrag from studienabschnitt where tid = 2;^ |
||||||
|
160779^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today() between sem_beginn and sem_ende;^ |
||||||
|
160780^Prüfungsart^15^0^0^140^150^1^char^4^0^1^<<SQL>> select apnr,druck from sos_k_part order by 2^ ^ ^ |
||||||
|
160781^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif WHERE cif.key = 9003 order by 2;^ ^ ^ |
||||||
|
160782^Felder^125^0^0^150^190^10^char^30^0^1^<<SQL>>\ |
||||||
|
--freemarker template\ |
||||||
|
select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\ |
||||||
|
sx_tables T where F.table_name=T.name and F.currentlyused=1\ |
||||||
|
<#if <<tablestylesheet>>='tabelle_html_datenblatt.xsl'>\ |
||||||
|
and (F.table_name ='msg_abp_aggr'\ |
||||||
|
/* or F.table_name in (<<Weitere Tabellen>>) */) \ |
||||||
|
<#else>\ |
||||||
|
and trim(F.table_name) || '.' || F.name in (select trim(tablename)||'.'||trim(fieldname) from stylesheet_field where stylesheet_id in \ |
||||||
|
(select tid from sx_stylesheets where filename=<<tablestylesheet>>))\ |
||||||
|
</#if>\ |
||||||
|
order by 2;^ ^ ^ |
||||||
|
160783^Fächer^8^0^0^150^200^6^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^ |
||||||
|
160784^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^ ^<<SQL>> select 1,'Ja' from xdummy^ |
||||||
|
160785^tablestylesheet^121^0^0^100^200^1^char^200^1^1^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=160770 order by ord^ ^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=160770 order by ord limit 1^ |
||||||
|
160786^Ausgabeformat^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and nature::smallint<100 order by nature::smallint^ ^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and description='HTML'^ |
||||||
|
160789^AbsolventInnen oder Abschlussprüfungen^11^0^0^100^200^1^integer^255^1^1^<<SQL>> \ |
||||||
|
select 1,'AbsolventInnen'\ |
||||||
|
union select 2,'Abschlussprüfungen'\ |
||||||
|
union select 3,'AbsolventInnenfachfälle'\ |
||||||
|
union select 4,'Teilstudienabschlussprüfungen'\ |
||||||
|
from xdummy \ |
||||||
|
order by 1^ ^<<SQL>> select 2,'Abschlussprüfungen' from xdummy^ |
||||||
|
160790^##line##^10^0^0^100^100^1^char^5000^0^8^^ ^1^ |
||||||
|
160791^Abschluss^9^0^0^140^170^5^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Abschluss-Sicht') and aktiv=1 order by 3,2;^ ^ ^ |
||||||
|
160792^Matrikel-Nr.^30^350^-1^150^180^1^char^200^0^0^^ ^ ^ |
||||||
|
160793^##line##^40^0^0^100^100^1^char^5000^0^8^^ ^1^ |
||||||
@ -0,0 +1 @@ |
|||||||
|
160770^7^ |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
160770^160770^ |
||||||
|
160770^160771^ |
||||||
|
160770^160772^ |
||||||
|
160770^160773^ |
||||||
|
160770^160774^ |
||||||
|
160770^160775^ |
||||||
|
160770^160776^ |
||||||
|
160770^160777^ |
||||||
|
160770^160778^ |
||||||
|
160770^160779^ |
||||||
|
160770^160780^ |
||||||
|
160770^160781^ |
||||||
|
160770^160782^ |
||||||
|
160770^160783^ |
||||||
|
160770^160784^ |
||||||
|
160770^160785^ |
||||||
|
160770^160786^ |
||||||
|
160770^160789^ |
||||||
|
160770^160790^ |
||||||
|
160770^160791^ |
||||||
|
160770^160792^ |
||||||
|
160770^160793^ |
||||||
@ -0,0 +1,140 @@ |
|||||||
|
160770^Abschlussprüfungen Datenblatt^--Freemarker Template\ |
||||||
|
<#include "SQL_lingua_franca"/>\ |
||||||
|
<#include "SuperX_general"/>\ |
||||||
|
<#include "DatenblattSQLGenerator"/>\ |
||||||
|
\ |
||||||
|
--ram excelexport \ |
||||||
|
\ |
||||||
|
<sqlvars>\ |
||||||
|
<sqlvar name="basetable" ><![CDATA[\ |
||||||
|
SELECT distinct name\ |
||||||
|
from sx_tables\ |
||||||
|
where name in ('msg_abp_aggr');]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getJoinTables" type="hashsequence"><![CDATA[\ |
||||||
|
SELECT distinct name\ |
||||||
|
from sx_tables\ |
||||||
|
where name in (''\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\ |
||||||
|
\ |
||||||
|
)\ |
||||||
|
order by 1;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getJoinWhereClauses" type="hashsequence"><![CDATA[\ |
||||||
|
select table_name || '.' || name || '=' || foreignkey_tab || '.' || foreignkey_col as condition,\ |
||||||
|
table_name ,\ |
||||||
|
foreignkey_tab\ |
||||||
|
from sx_fields where table_name in ('${basetable}'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)} )\ |
||||||
|
and foreignkey_tab in ('-xy'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)})\ |
||||||
|
;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getSelectClause" type="hashsequence"><![CDATA[\ |
||||||
|
SELECT name,\ |
||||||
|
caption,\ |
||||||
|
field_type,\ |
||||||
|
is_primarykey,\ |
||||||
|
foreignkey_tab,\ |
||||||
|
foreignkey_col,\ |
||||||
|
foreignkey_cap,\ |
||||||
|
foreignkey_cond,\ |
||||||
|
foreignkey_func,\ |
||||||
|
table_name,\ |
||||||
|
foreignkey_uniquename\ |
||||||
|
from sx_fields\ |
||||||
|
where table_name in ('${basetable}'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\ |
||||||
|
)\ |
||||||
|
and currentlyused=1\ |
||||||
|
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\ |
||||||
|
order by 2,3;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
</sqlvars>\ |
||||||
|
\ |
||||||
|
--#### Filter Abschlusstyp festlegen #########################\ |
||||||
|
--Filterbedingung für select der Prüfungsdatensätze und zu verwendendes Prüfungssemester (1,2,3: des Gesamtabschlusses, 4: des Teilstudienabschlusses) festlegen\ |
||||||
|
-- S für quelltabelle (da im Filter "Köpfe oder Fälle?" verwendet)\ |
||||||
|
<#if "<<AbsolventInnen oder Abschlussprüfungen>>" == "1" > --AbsolventInnen\ |
||||||
|
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_GES} and studiengangstyp in ('ESG','MSG') " />\ |
||||||
|
<#assign pruefstatus = " and pstatus = 'BE' " />\ |
||||||
|
<#assign pruefsemester = "sem_der_pruefung" />\ |
||||||
|
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "2" > --Abschlussprüfungen\ |
||||||
|
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_GES} and studiengangstyp in ('ESG','MSG') " />\ |
||||||
|
<#assign pruefstatus = " " />\ |
||||||
|
<#assign pruefsemester = "sem_der_pruefung" />\ |
||||||
|
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "3" > --AbsolventInnenfachfälle\ |
||||||
|
<#assign pruefabschlusstyp = " and ((studiengangstyp='ESG' and ${SOS_ABSCHLUSSTYP_GES}) or (studiengangstyp='TSG' and ${SOS_ABSCHLUSSTYP_TSTG})) " />\ |
||||||
|
<#assign pruefstatus = " and pstatus = 'BE' and ((studiengangstyp='TSG' and pstatus_tsg = 'BE') or studiengangstyp='ESG') " />\ |
||||||
|
<#assign pruefsemester = "sem_der_pruefung" />\ |
||||||
|
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "4" > --Teilstudienabschlussprüfungen\ |
||||||
|
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_TSTG} and studiengangstyp in ('TSG') " />\ |
||||||
|
<#assign pruefstatus = " " />\ |
||||||
|
<#assign pruefsemester = "sem_der_pruefung_tsg" />\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#assign filter="and prueck=0\ |
||||||
|
/* AND fach_sem_zahl <= <<bis Fachsemester>> */\ |
||||||
|
/* and stichtag = <<Stichtag Prüfungen>> */\ |
||||||
|
/* and geschlecht=<<Geschlecht>> */\ |
||||||
|
/* and part = <<Prüfungsart>> */\ |
||||||
|
/* and matrikel_nr=<<Matrikel-Nr.>> */\ |
||||||
|
" />\ |
||||||
|
<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung_id=")!=-1>\ |
||||||
|
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]?replace('S.','msg_abp_aggr_gew.')/>\ |
||||||
|
<#if "<<Weitere Tabellen>>"?index_of("dim_studiengang_gew")>-1>\ |
||||||
|
<#assign filter=filter+" and (dim_studiengang_gew.gewichtid is null or "+.vars["Köpfe oder Fälle ?"]?replace('S.','dim_studiengang_gew.')?replace("gewichtung_id","gewichtid")+")"/>\ |
||||||
|
</#if>\ |
||||||
|
<#elseif "<<Köpfe oder Fälle ?>>"!="">\ |
||||||
|
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]/>\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> --<<Studiengang>> \ |
||||||
|
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.stg in "+Fächer.allNeededKeysList +")" /> --<<Fächer>> */\ |
||||||
|
\ |
||||||
|
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\ |
||||||
|
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in " + Abschluss.allNeededKeysList +")" /> --<<Abschluss>> */\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
/* <#assign filter=filter+ " and "+ pruefsemester+" >= <<Seit Semester>> " /> */\ |
||||||
|
/* <#assign filter=filter+ " and "+ pruefsemester+" <= <<Bis Semester>> " /> */\ |
||||||
|
<#assign filter=filter+ pruefstatus /> \ |
||||||
|
<#assign filter=filter+ pruefabschlusstyp /> \ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<@generateDatenblatt \ |
||||||
|
p_basetable = basetable\ |
||||||
|
p_joinTables = getJoinTables\ |
||||||
|
p_joinWhereClauses = getJoinWhereClauses\ |
||||||
|
p_selectClause = getSelectClause\ |
||||||
|
p_aggregationsfeld ="summe"\ |
||||||
|
p_aggregatfunktion = "sum("\ |
||||||
|
p_filter = filter\ |
||||||
|
p_show_keys= <<Schlüssel anzeigen>>\ |
||||||
|
p_postProcessing= ""\ |
||||||
|
/>^--Freemarker Template \ |
||||||
|
XIL List\ |
||||||
|
sizable_columns horizontal_scrolling\ |
||||||
|
white_space_color=COLOR_WHITE fixed_columns=1\ |
||||||
|
min_heading_height=35\ |
||||||
|
<#assign i=1 />\ |
||||||
|
<#if getSelectClause?has_content >\ |
||||||
|
<#foreach myfield in getSelectClause>\ |
||||||
|
<#assign i=i+1 />\ |
||||||
|
Column CID=${i} heading_text="${myfield.caption}" explanation="" center_heading\ |
||||||
|
row_selectable col_selectable rightJust heading_platform readonly\ |
||||||
|
width=20\ |
||||||
|
<#if myfield.foreignkey_tab != '' && <<Schlüssel anzeigen>>==1>\ |
||||||
|
<#assign i=i+1 />\ |
||||||
|
Column CID=${i} heading_text="${myfield.caption}\\n(Schlüssel)" explanation="" center_heading\ |
||||||
|
row_selectable col_selectable rightJust heading_platform readonly\ |
||||||
|
width=20\ |
||||||
|
</#if>\ |
||||||
|
</#foreach>\ |
||||||
|
</#if>\ |
||||||
|
@@@^Altersgruppe^Anzahl^Abschlussprüfungen Einfach,- Mehrfach- und Teilstudiengänge^drop table tmp_tabelle;^^2^700^360^^1^ ^ |
||||||
@ -0,0 +1 @@ |
|||||||
|
16^160770^ |
||||||
@ -0,0 +1,45 @@ |
|||||||
|
49000^Köpfe oder Fälle ?^1^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag = 'Fälle';^ |
||||||
|
49001^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today()-365 between sem_beginn and sem_ende;^ |
||||||
|
49002^Studiengang^6^0^0^140^150^50^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^ ^ ^ |
||||||
|
49003^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^ ^ ^ |
||||||
|
49004^Stichtag Prüfungen^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen' order by 2;^ ^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen' and appl_key='2';^ |
||||||
|
49005^Prüfungsstatus^13^0^0^140^70^1^char^30^0^1^<<SQL>> select apnr,druck from sos_k_pstatus;^hidden^ ^ |
||||||
|
49006^Weitere Tabellen^123^0^0^140^140^10^char^30^0^1^<<SQL>> \ |
||||||
|
--freemarker template\ |
||||||
|
select name,string_not_null(caption) || ' - ' || name from sx_tables where name in ('dim_studiengang')\ |
||||||
|
<#if <<tablestylesheet>>!='tabelle_html_datenblatt.xsl'>\ |
||||||
|
and name in (select distinct tablename from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename=<<tablestylesheet>>)) \ |
||||||
|
</#if>\ |
||||||
|
order by 2^ ^ ^ |
||||||
|
49007^bis Fachsemester^20^350^-1^140^10^1^integer^30^0^0^^ ^ ^ |
||||||
|
49008^Studienabschnitt^12^330^-1^130^150^1^integer^4^1^1^<<SQL>> select tid, eintrag from studienabschnitt where tid <= 2 order by 1;^hidden^<<SQL>> select tid, eintrag from studienabschnitt where tid = 2;^ |
||||||
|
49009^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today() between sem_beginn and sem_ende;^ |
||||||
|
49010^Prüfungsart^15^0^0^140^150^1^char^4^0^1^<<SQL>> select apnr,druck from sos_k_part order by 2^ ^ ^ |
||||||
|
49011^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif WHERE cif.key = 9003 order by 2;^ ^ ^ |
||||||
|
49012^Felder^125^0^0^150^190^10^char^30^0^1^<<SQL>>\ |
||||||
|
--freemarker template\ |
||||||
|
select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\ |
||||||
|
sx_tables T where F.table_name=T.name and F.currentlyused=1\ |
||||||
|
<#if <<tablestylesheet>>='tabelle_html_datenblatt.xsl'>\ |
||||||
|
and (F.table_name ='msg_abp_aggr'\ |
||||||
|
/* or F.table_name in (<<Weitere Tabellen>>) */) \ |
||||||
|
<#else>\ |
||||||
|
and trim(F.table_name) || '.' || F.name in (select trim(tablename)||'.'||trim(fieldname) from stylesheet_field where stylesheet_id in \ |
||||||
|
(select tid from sx_stylesheets where filename=<<tablestylesheet>>))\ |
||||||
|
</#if>\ |
||||||
|
order by 2;^ ^ ^ |
||||||
|
49013^Fächer^8^0^0^150^200^6^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^ |
||||||
|
49014^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^ ^<<SQL>> select 1,'Ja' from xdummy^ |
||||||
|
49015^tablestylesheet^121^0^0^100^200^1^char^200^1^1^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=49000 order by ord^ ^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=49000 order by ord limit 1^ |
||||||
|
49016^Ausgabeformat^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and nature::smallint<100 order by nature::smallint^ ^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and description='HTML'^ |
||||||
|
49019^AbsolventInnen oder Abschlussprüfungen^11^0^0^100^200^1^integer^255^1^1^<<SQL>> \ |
||||||
|
select 1,'AbsolventInnen'\ |
||||||
|
union select 2,'Abschlussprüfungen'\ |
||||||
|
union select 3,'AbsolventInnenfachfälle'\ |
||||||
|
union select 4,'Teilstudienabschlussprüfungen'\ |
||||||
|
from xdummy \ |
||||||
|
order by 1^ ^<<SQL>> select 2,'Abschlussprüfungen' from xdummy^ |
||||||
|
49020^##line##^10^0^0^100^100^1^char^5000^0^8^^ ^1^ |
||||||
|
49021^Abschluss^9^0^0^140^170^5^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Abschluss-Sicht') and aktiv=1 order by 3,2;^ ^ ^ |
||||||
|
49022^Matrikel-Nr.^30^350^-1^150^180^1^char^200^0^0^^ ^ ^ |
||||||
|
49023^##line##^40^0^0^100^100^1^char^5000^0^8^^ ^1^ |
||||||
@ -0,0 +1 @@ |
|||||||
|
49000^370^ |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
49000^49000^ |
||||||
|
49000^49001^ |
||||||
|
49000^49002^ |
||||||
|
49000^49003^ |
||||||
|
49000^49004^ |
||||||
|
49000^49005^ |
||||||
|
49000^49006^ |
||||||
|
49000^49007^ |
||||||
|
49000^49008^ |
||||||
|
49000^49009^ |
||||||
|
49000^49010^ |
||||||
|
49000^49011^ |
||||||
|
49000^49012^ |
||||||
|
49000^49013^ |
||||||
|
49000^49014^ |
||||||
|
49000^49015^ |
||||||
|
49000^49016^ |
||||||
|
49000^49019^ |
||||||
|
49000^49020^ |
||||||
|
49000^49021^ |
||||||
|
49000^49022^ |
||||||
|
49000^49023^ |
||||||
@ -0,0 +1,140 @@ |
|||||||
|
49000^Abschlussprüfungen Datenblatt^--Freemarker Template\ |
||||||
|
<#include "SQL_lingua_franca"/>\ |
||||||
|
<#include "SuperX_general"/>\ |
||||||
|
<#include "DatenblattSQLGenerator"/>\ |
||||||
|
\ |
||||||
|
--ram excelexport \ |
||||||
|
\ |
||||||
|
<sqlvars>\ |
||||||
|
<sqlvar name="basetable" ><![CDATA[\ |
||||||
|
SELECT distinct name\ |
||||||
|
from sx_tables\ |
||||||
|
where name in ('msg_abp_aggr');]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getJoinTables" type="hashsequence"><![CDATA[\ |
||||||
|
SELECT distinct name\ |
||||||
|
from sx_tables\ |
||||||
|
where name in (''\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\ |
||||||
|
\ |
||||||
|
)\ |
||||||
|
order by 1;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getJoinWhereClauses" type="hashsequence"><![CDATA[\ |
||||||
|
select table_name || '.' || name || '=' || foreignkey_tab || '.' || foreignkey_col as condition,\ |
||||||
|
table_name ,\ |
||||||
|
foreignkey_tab\ |
||||||
|
from sx_fields where table_name in ('${basetable}'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)} )\ |
||||||
|
and foreignkey_tab in ('-xy'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)})\ |
||||||
|
;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getSelectClause" type="hashsequence"><![CDATA[\ |
||||||
|
SELECT name,\ |
||||||
|
caption,\ |
||||||
|
field_type,\ |
||||||
|
is_primarykey,\ |
||||||
|
foreignkey_tab,\ |
||||||
|
foreignkey_col,\ |
||||||
|
foreignkey_cap,\ |
||||||
|
foreignkey_cond,\ |
||||||
|
foreignkey_func,\ |
||||||
|
table_name,\ |
||||||
|
foreignkey_uniquename\ |
||||||
|
from sx_fields\ |
||||||
|
where table_name in ('${basetable}'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\ |
||||||
|
)\ |
||||||
|
and currentlyused=1\ |
||||||
|
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\ |
||||||
|
order by 2,3;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
</sqlvars>\ |
||||||
|
\ |
||||||
|
--#### Filter Abschlusstyp festlegen #########################\ |
||||||
|
--Filterbedingung für select der Prüfungsdatensätze und zu verwendendes Prüfungssemester (1,2,3: des Gesamtabschlusses, 4: des Teilstudienabschlusses) festlegen\ |
||||||
|
-- S für quelltabelle (da im Filter "Köpfe oder Fälle?" verwendet)\ |
||||||
|
<#if "<<AbsolventInnen oder Abschlussprüfungen>>" == "1" > --AbsolventInnen\ |
||||||
|
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_GES} and studiengangstyp in ('ESG','MSG') " />\ |
||||||
|
<#assign pruefstatus = " and pstatus = 'BE' " />\ |
||||||
|
<#assign pruefsemester = "sem_der_pruefung" />\ |
||||||
|
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "2" > --Abschlussprüfungen\ |
||||||
|
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_GES} and studiengangstyp in ('ESG','MSG') " />\ |
||||||
|
<#assign pruefstatus = " " />\ |
||||||
|
<#assign pruefsemester = "sem_der_pruefung" />\ |
||||||
|
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "3" > --AbsolventInnenfachfälle\ |
||||||
|
<#assign pruefabschlusstyp = " and ((studiengangstyp='ESG' and ${SOS_ABSCHLUSSTYP_GES}) or (studiengangstyp='TSG' and ${SOS_ABSCHLUSSTYP_TSTG})) " />\ |
||||||
|
<#assign pruefstatus = " and pstatus = 'BE' and ((studiengangstyp='TSG' and pstatus_tsg = 'BE') or studiengangstyp='ESG') " />\ |
||||||
|
<#assign pruefsemester = "sem_der_pruefung" />\ |
||||||
|
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "4" > --Teilstudienabschlussprüfungen\ |
||||||
|
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_TSTG} and studiengangstyp in ('TSG') " />\ |
||||||
|
<#assign pruefstatus = " " />\ |
||||||
|
<#assign pruefsemester = "sem_der_pruefung_tsg" />\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#assign filter="and prueck=0\ |
||||||
|
/* AND fach_sem_zahl <= <<bis Fachsemester>> */\ |
||||||
|
/* and stichtag = <<Stichtag Prüfungen>> */\ |
||||||
|
/* and geschlecht=<<Geschlecht>> */\ |
||||||
|
/* and part = <<Prüfungsart>> */\ |
||||||
|
/* and matrikel_nr=<<Matrikel-Nr.>> */\ |
||||||
|
" />\ |
||||||
|
<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung_id=")!=-1>\ |
||||||
|
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]?replace('S.','sos_abp_aggr_gew.')/>\ |
||||||
|
<#if "<<Weitere Tabellen>>"?index_of("dim_studiengang_gew")>-1>\ |
||||||
|
<#assign filter=filter+" and (dim_studiengang_gew.gewichtid is null or "+.vars["Köpfe oder Fälle ?"]?replace('S.','dim_studiengang_gew.')?replace("gewichtung_id","gewichtid")+")"/>\ |
||||||
|
</#if>\ |
||||||
|
<#elseif "<<Köpfe oder Fälle ?>>"!="">\ |
||||||
|
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]/>\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> --<<Studiengang>> \ |
||||||
|
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.stg in "+Fächer.allNeededKeysList +")" /> --<<Fächer>> */\ |
||||||
|
\ |
||||||
|
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\ |
||||||
|
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in " + Abschluss.allNeededKeysList +")" /> --<<Abschluss>> */\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
/* <#assign filter=filter+ " and "+ pruefsemester+" >= <<Seit Semester>> " /> */\ |
||||||
|
/* <#assign filter=filter+ " and "+ pruefsemester+" <= <<Bis Semester>> " /> */\ |
||||||
|
<#assign filter=filter+ pruefstatus /> \ |
||||||
|
<#assign filter=filter+ pruefabschlusstyp /> \ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<@generateDatenblatt \ |
||||||
|
p_basetable = basetable\ |
||||||
|
p_joinTables = getJoinTables\ |
||||||
|
p_joinWhereClauses = getJoinWhereClauses\ |
||||||
|
p_selectClause = getSelectClause\ |
||||||
|
p_aggregationsfeld ="summe"\ |
||||||
|
p_aggregatfunktion = "sum("\ |
||||||
|
p_filter = filter\ |
||||||
|
p_show_keys= <<Schlüssel anzeigen>>\ |
||||||
|
p_postProcessing= ""\ |
||||||
|
/>^--Freemarker Template \ |
||||||
|
XIL List\ |
||||||
|
sizable_columns horizontal_scrolling\ |
||||||
|
white_space_color=COLOR_WHITE fixed_columns=1\ |
||||||
|
min_heading_height=35\ |
||||||
|
<#assign i=1 />\ |
||||||
|
<#if getSelectClause?has_content >\ |
||||||
|
<#foreach myfield in getSelectClause>\ |
||||||
|
<#assign i=i+1 />\ |
||||||
|
Column CID=${i} heading_text="${myfield.caption}" explanation="" center_heading\ |
||||||
|
row_selectable col_selectable rightJust heading_platform readonly\ |
||||||
|
width=20\ |
||||||
|
<#if myfield.foreignkey_tab != '' && <<Schlüssel anzeigen>>==1>\ |
||||||
|
<#assign i=i+1 />\ |
||||||
|
Column CID=${i} heading_text="${myfield.caption}\\n(Schlüssel)" explanation="" center_heading\ |
||||||
|
row_selectable col_selectable rightJust heading_platform readonly\ |
||||||
|
width=20\ |
||||||
|
</#if>\ |
||||||
|
</#foreach>\ |
||||||
|
</#if>\ |
||||||
|
@@@^Altersgruppe^Anzahl^Abschlussprüfungen Einfach,- Mehrfach- und Teilstudiengänge^drop table tmp_tabelle;^^2^700^360^^1^ ^ |
||||||
@ -0,0 +1 @@ |
|||||||
|
370^49000^ |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
49040^Filter Kombinationen^60^0^0^140^150^1^sql^70^0^1^<<SQL>> select id,caption from sx_repository where art='MSG_FKOMBI_FILTER' order by 2^ ^ ^ |
||||||
|
49041^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today()-365 between sem_beginn and sem_ende;^ |
||||||
|
49042^Studiengang^6^0^0^140^150^50^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^ ^ ^ |
||||||
|
49043^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^ ^ ^ |
||||||
|
49046^Weitere Tabellen^123^0^0^140^140^10^char^30^0^1^<<SQL>> \ |
||||||
|
--freemarker template\ |
||||||
|
select name,string_not_null(caption) || ' - ' || name from sx_tables where name in ('dim_studiengang')\ |
||||||
|
<#if <<tablestylesheet>>!='tabelle_html_datenblatt.xsl'>\ |
||||||
|
and name in (select distinct tablename from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename=<<tablestylesheet>>)) \ |
||||||
|
</#if>\ |
||||||
|
order by 2^ ^ ^ |
||||||
|
49047^bis Fachsemester^20^350^-1^140^10^1^integer^30^0^0^^ ^ ^ |
||||||
|
49049^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today() between sem_beginn and sem_ende;^ |
||||||
|
49051^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif WHERE cif.key = 9003 order by 2;^ ^ ^ |
||||||
|
49052^Felder^125^0^0^150^190^10^char^30^0^1^<<SQL>>\ |
||||||
|
--freemarker template\ |
||||||
|
select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\ |
||||||
|
sx_tables T where F.table_name=T.name and F.currentlyused=1\ |
||||||
|
<#if <<tablestylesheet>>='tabelle_html_datenblatt.xsl'>\ |
||||||
|
and (F.table_name ='msg_fkombi_aggr'\ |
||||||
|
/* or F.table_name in (<<Weitere Tabellen>>) */) \ |
||||||
|
<#else>\ |
||||||
|
and trim(F.table_name) || '.' || F.name in (select trim(tablename)||'.'||trim(fieldname) from stylesheet_field where stylesheet_id in \ |
||||||
|
(select tid from sx_stylesheets where filename=<<tablestylesheet>>))\ |
||||||
|
</#if>\ |
||||||
|
order by 2;^ ^ ^ |
||||||
|
49053^Fächer^8^0^0^150^200^6^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^ |
||||||
|
49054^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^ ^<<SQL>> select 1,'Ja' from xdummy^ |
||||||
|
49055^tablestylesheet^121^0^0^100^200^1^char^200^1^1^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=49040 order by ord^ ^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=49040 order by ord limit 1^ |
||||||
|
49056^Ausgabeformat^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and nature::smallint<100 order by nature::smallint^ ^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and description='HTML'^ |
||||||
|
49060^##line##^10^0^0^100^100^1^char^5000^0^8^^ ^1^ |
||||||
|
49061^Abschluss^9^0^0^140^170^5^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Abschluss-Sicht') and aktiv=1 order by 3,2;^ ^ ^ |
||||||
|
49062^Matrikel-Nr.^30^350^-1^150^180^1^char^200^0^0^^ ^ ^ |
||||||
|
49063^##line##^40^0^0^100^100^1^char^5000^0^8^^ ^1^ |
||||||
@ -0,0 +1 @@ |
|||||||
|
49040^370^ |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
49040^49040^ |
||||||
|
49040^49041^ |
||||||
|
49040^49042^ |
||||||
|
49040^49043^ |
||||||
|
49040^49046^ |
||||||
|
49040^49047^ |
||||||
|
49040^49049^ |
||||||
|
49040^49051^ |
||||||
|
49040^49052^ |
||||||
|
49040^49053^ |
||||||
|
49040^49054^ |
||||||
|
49040^49055^ |
||||||
|
49040^49056^ |
||||||
|
49040^49060^ |
||||||
|
49040^49061^ |
||||||
|
49040^49062^ |
||||||
|
49040^49063^ |
||||||
@ -0,0 +1,109 @@ |
|||||||
|
49040^Fächerkombinatorik Datenblatt^--Freemarker Template\ |
||||||
|
<#include "SQL_lingua_franca"/>\ |
||||||
|
<#include "SuperX_general"/>\ |
||||||
|
<#include "DatenblattSQLGenerator"/>\ |
||||||
|
\ |
||||||
|
--ram excelexport \ |
||||||
|
\ |
||||||
|
<sqlvars>\ |
||||||
|
<sqlvar name="basetable" ><![CDATA[\ |
||||||
|
SELECT distinct name\ |
||||||
|
from sx_tables\ |
||||||
|
where name in ('msg_fkombi_aggr');]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getJoinTables" type="hashsequence"><![CDATA[\ |
||||||
|
SELECT distinct name\ |
||||||
|
from sx_tables\ |
||||||
|
where name in (''\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\ |
||||||
|
\ |
||||||
|
)\ |
||||||
|
order by 1;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getJoinWhereClauses" type="hashsequence"><![CDATA[\ |
||||||
|
select table_name || '.' || name || '=' || foreignkey_tab || '.' || foreignkey_col as condition,\ |
||||||
|
table_name ,\ |
||||||
|
foreignkey_tab\ |
||||||
|
from sx_fields where table_name in ('${basetable}'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)} )\ |
||||||
|
and foreignkey_tab in ('-xy'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)})\ |
||||||
|
;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="getSelectClause" type="hashsequence"><![CDATA[\ |
||||||
|
SELECT name,\ |
||||||
|
caption,\ |
||||||
|
field_type,\ |
||||||
|
is_primarykey,\ |
||||||
|
foreignkey_tab,\ |
||||||
|
foreignkey_col,\ |
||||||
|
foreignkey_cap,\ |
||||||
|
foreignkey_cond,\ |
||||||
|
foreignkey_func,\ |
||||||
|
table_name,\ |
||||||
|
foreignkey_uniquename\ |
||||||
|
from sx_fields\ |
||||||
|
where table_name in ('${basetable}'\ |
||||||
|
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\ |
||||||
|
)\ |
||||||
|
and currentlyused=1\ |
||||||
|
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\ |
||||||
|
order by 2,3;]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
</sqlvars>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#assign filter="and 1=1\ |
||||||
|
/* AND fach_sem_zahl <= <<bis Fachsemester>> */\ |
||||||
|
/* and geschlecht=<<Geschlecht>> */\ |
||||||
|
/* and matrikel_nr=<<Matrikel-Nr.>> */\ |
||||||
|
" />\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> --<<Studiengang>> \ |
||||||
|
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.stg in "+Fächer.allNeededKeysList +")" /> --<<Fächer>> */\ |
||||||
|
\ |
||||||
|
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\ |
||||||
|
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in " + Abschluss.allNeededKeysList +")" /> --<<Abschluss>> */\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
/* <#assign filter=filter+ " and sem_rueck_beur_ein >= <<Seit Semester>> " /> */\ |
||||||
|
/* <#assign filter=filter+ " and sem_rueck_beur_ein <= <<Bis Semester>> " /> */\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<@generateDatenblatt \ |
||||||
|
p_basetable = basetable\ |
||||||
|
p_joinTables = getJoinTables\ |
||||||
|
p_joinWhereClauses = getJoinWhereClauses\ |
||||||
|
p_selectClause = getSelectClause\ |
||||||
|
p_aggregationsfeld ="summe"\ |
||||||
|
p_aggregatfunktion = "sum("\ |
||||||
|
p_filter = filter\ |
||||||
|
p_show_keys= <<Schlüssel anzeigen>>\ |
||||||
|
p_postProcessing= ""\ |
||||||
|
/>^--Freemarker Template \ |
||||||
|
XIL List\ |
||||||
|
sizable_columns horizontal_scrolling\ |
||||||
|
white_space_color=COLOR_WHITE fixed_columns=1\ |
||||||
|
min_heading_height=35\ |
||||||
|
<#assign i=1 />\ |
||||||
|
<#if getSelectClause?has_content >\ |
||||||
|
<#foreach myfield in getSelectClause>\ |
||||||
|
<#assign i=i+1 />\ |
||||||
|
Column CID=${i} heading_text="${myfield.caption}" explanation="" center_heading\ |
||||||
|
row_selectable col_selectable rightJust heading_platform readonly\ |
||||||
|
width=20\ |
||||||
|
<#if myfield.foreignkey_tab != '' && <<Schlüssel anzeigen>>==1>\ |
||||||
|
<#assign i=i+1 />\ |
||||||
|
Column CID=${i} heading_text="${myfield.caption}\\n(Schlüssel)" explanation="" center_heading\ |
||||||
|
row_selectable col_selectable rightJust heading_platform readonly\ |
||||||
|
width=20\ |
||||||
|
</#if>\ |
||||||
|
</#foreach>\ |
||||||
|
</#if>\ |
||||||
|
@@@^Altersgruppe^Anzahl^Auswertung von Fächerkombinationen^drop table tmp_tabelle;^^2^700^360^^1^ ^ |
||||||
@ -0,0 +1 @@ |
|||||||
|
370^49040^ |
||||||
@ -0,0 +1,5 @@ |
|||||||
|
#!/bin/bash |
||||||
|
echo "------------------------------------------------------------" |
||||||
|
echo |
||||||
|
module_drop.x lm $LM_PFAD |
||||||
|
|
||||||
@ -0,0 +1,4 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
module_install.x lm $LM_PFAD |
||||||
|
|
||||||
@ -0,0 +1,65 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
#Arbeitsverzeichnis fuer crontab |
||||||
|
PFAD=$2 |
||||||
|
if [ "$PFAD" != "" ] |
||||||
|
then |
||||||
|
|
||||||
|
cd $PFAD |
||||||
|
|
||||||
|
fi |
||||||
|
#Umgebung einlesen: |
||||||
|
if [ "$MSG_PFAD" = "" ] |
||||||
|
then |
||||||
|
echo "ACHTUNG: Die Umgebungsvariable MSG_PFAD ist nicht gesetzt. Bitte prüfen Sie $SUPERX_DIR/db/bin/SQL_ENV" |
||||||
|
|
||||||
|
exit 1 |
||||||
|
|
||||||
|
fi |
||||||
|
if [ "$MSG_ERRORMAIL" != "" ] |
||||||
|
then |
||||||
|
ERRORMAIL=$MSG_ERRORMAIL |
||||||
|
export ERRORMAIL |
||||||
|
fi |
||||||
|
if [ "$MSG_LOGMAIL" != "" ] |
||||||
|
then |
||||||
|
LOGMAIL=$MSG_LOGMAIL |
||||||
|
export LOGMAIL |
||||||
|
fi |
||||||
|
if [ "$MSG_BACKUP" != "" ] |
||||||
|
then |
||||||
|
MODULE_BACKUP=$MSG_BACKUP |
||||||
|
export MODULE_BACKUP |
||||||
|
fi |
||||||
|
|
||||||
|
#hier geht es los |
||||||
|
#runAndCheck.x path command (EXIT_ON_ERROR|CONT_ON_ERROR) (SEND_ERRORMAIL|NO_ERRORMAIL) (SEND_LOGMAIL|NO_LOGMAIL) [description] " |
||||||
|
echo "msg-Update startet" >$MSG_ERRORDAT |
||||||
|
#Tagesdatum für Systeminfo |
||||||
|
date +'%d.%m.%Y' > $MSG_LOAD_PFAD/superx.datum |
||||||
|
|
||||||
|
runAndCheck.x $MSG_PFAD "module_etl.x msg $MSG_PFAD $MSG_LOAD_PFAD" EXIT_ON_ERROR SEND_ERRORMAIL SEND_LOGMAIL "MSG update$MANDANTID" |
||||||
|
cat $MSG_PFAD/L_MSG_update$MANDANTID.log >>$MSG_ERRORDAT |
||||||
|
|
||||||
|
|
||||||
|
fgrep -s "not found" $MSG_ERRORDAT |
||||||
|
FLAG1=$? |
||||||
|
fgrep -i -s "error" $MSG_ERRORDAT |
||||||
|
FLAG2=$? |
||||||
|
fgrep -i -s "nicht gefunden" $MSG_ERRORDAT |
||||||
|
FLAG3=$? |
||||||
|
if [ $FLAG1 -eq 0 -o $FLAG2 -eq 0 -o $FLAG3 -eq 0 ] |
||||||
|
then |
||||||
|
echo "Fehler beim MSG-Update " |
||||||
|
echo "---------------------------------------" |
||||||
|
echo "Fehlerprotokoll in $MSG_ERRORDAT" |
||||||
|
echo "---------------------------------------" |
||||||
|
cp $MSG_LOAD_PFAD/superx.datum.alt $MSG_LOAD_PFAD/superx.datum |
||||||
|
else |
||||||
|
echo "MSG-Update erfolgreich" |
||||||
|
fi |
||||||
|
|
||||||
|
echo "---------------------------Beginn Prüfroutine-----------------------------------" >>$MSG_ERRORDAT |
||||||
|
#cat $MSG_PFAD/L_msg_Test$MANDANTID.log >>$MSG_ERRORDAT |
||||||
|
pruefmail.x $MSG_PFAD/L_msg_Test$MANDANTID.log $ERRORMAIL |
||||||
|
|
||||||
@ -0,0 +1,18 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
#Beispielscript für cronjobs |
||||||
|
#Im cronjob ist keine Umgebung vorhanden, deshalb vorher laden. |
||||||
|
#Selbstredend als normaler user, nicht als root z.B. |
||||||
|
. /home/superx/db/bin/SQL_ENV |
||||||
|
|
||||||
|
cd $MSG_LOAD_PFAD |
||||||
|
./msg_unload.x |
||||||
|
|
||||||
|
|
||||||
|
$MSG_PFAD/msg_update.x $MSG_PFAD |
||||||
|
|
||||||
|
#In der crontab sähe das so aus: |
||||||
|
# msg-Update |
||||||
|
# -0 4 * * 2,3,4,5,6 /home/superx/db/module/msg/msg_update_cron.x >/home/superx/db/module/msg/msg_update_cron.log 2>&1 |
||||||
|
# Bedeutung: Der MSG-Update wird Di-Sa morgens um 4:00 Uhr ausgeführt |
||||||
|
|
||||||
@ -0,0 +1,18 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
#Beispielscript für cronjobs |
||||||
|
#Im cronjob ist keine Umgebung vorhanden, deshalb vorher laden. |
||||||
|
#Selbstredend als normaler user, nicht als root z.B. |
||||||
|
. /home/superx/db/bin/SQL_ENV |
||||||
|
|
||||||
|
cd $MSG_LOAD_PFAD |
||||||
|
./msg_costage_unload.x |
||||||
|
|
||||||
|
|
||||||
|
$MSG_PFAD/msg_update.x $MSG_PFAD |
||||||
|
|
||||||
|
#In der crontab sähe das so aus: |
||||||
|
# msg-Update |
||||||
|
# -0 4 * * 2,3,4,5,6 /home/superx/db/module/msg/msg_update_cron.x >/home/superx/db/module/msg/msg_update_cron.log 2>&1 |
||||||
|
# Bedeutung: Der MSG-Update wird Di-Sa morgens um 4:00 Uhr ausgeführt |
||||||
|
|
||||||
@ -0,0 +1,207 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
#Entladeumgebung für SuperX |
||||||
|
#Die folgenden Parameter müssen angepasst werden |
||||||
|
|
||||||
|
# SX_CLIENT ist die Client-Anwendung zum Zugriff auf die DB |
||||||
|
# Mögliche Werte: dbaccess (Informix), psql (Postgres), jdbc (Alle anderen) |
||||||
|
#SX_CLIENT=dbaccess; export SX_CLIENT |
||||||
|
SX_CLIENT=psql; export SX_CLIENT |
||||||
|
#SX_CLIENT=jdbc; export SX_CLIENT |
||||||
|
#Wichtig bei jdbc und psql: Die Umgebungsvariable DB_PROPERTIES gibt des Pfad zur db-xxx.properties an. |
||||||
|
#Dies wird in allen Programmen des jdbc-Clients genutzt. |
||||||
|
#DB_PROPERTIES=./db-sos_pg.properties |
||||||
|
#export DB_PROPERTIES |
||||||
|
#auch die Logging-Ausgabe kann variiert werden: (./logging.properties.sam umbenennen) |
||||||
|
#LOGGER_PROPERTIES=./logging.properties.sam |
||||||
|
#export LOGGER_PROPERTIES |
||||||
|
#Für jdbc auch JAVA_OPTS: viel RAM |
||||||
|
#JAVA_OPTS="-Xmx500M" |
||||||
|
#export JAVA_OPTS |
||||||
|
#Database: POSTGRES, INFORMIX |
||||||
|
DATABASE=POSTGRES |
||||||
|
export DATABASE |
||||||
|
#Aus welchem System wird entladen ? SOSPOS-GX oder HISinOne? |
||||||
|
#SOURCESYSTEM=hisinone |
||||||
|
SOURCESYSTEM=sospos |
||||||
|
export SOURCESYSTEM |
||||||
|
|
||||||
|
|
||||||
|
#Achtung: Wichtig ist unter UNIX, dass LANG korrekt (auf UTF-8,ISO-8859-1 oder de_DE@euro) gesetzt ist. |
||||||
|
#Wir haben die Variable hier nicht definiert, weil das eigentlich |
||||||
|
#sytsemweit definiert sein muss. LANG ist bereits beim Entpacken |
||||||
|
#den Kernmoduls massgeblich. |
||||||
|
#LANG=de_DE@euro |
||||||
|
#LANG=de_DE.UTF-8 |
||||||
|
#export LANG |
||||||
|
|
||||||
|
case $SX_CLIENT in |
||||||
|
|
||||||
|
dbaccess) |
||||||
|
|
||||||
|
|
||||||
|
INFORMIXDIR=/home/informix |
||||||
|
export INFORMIXDIR |
||||||
|
INFORMIXSERVER=sospos_host |
||||||
|
export INFORMIXSERVER |
||||||
|
ONCONFIG=onconfig.sospos |
||||||
|
export ONCONFIG |
||||||
|
INF_BIN=$INFORMIXDIR/bin |
||||||
|
export INF_BIN |
||||||
|
|
||||||
|
DBMONEY=. ; export DBMONEY |
||||||
|
DBDATE=DMY4. ; export DBDATE |
||||||
|
DBDELIMITER="^" ; export DBDELIMITER |
||||||
|
CLIENT_LOCALE=de_de.8859-1@bund |
||||||
|
export CLIENT_LOCALE |
||||||
|
SERVER_LOCALE=de_de.8859-1@bund |
||||||
|
export SERVER_LOCALE |
||||||
|
;; |
||||||
|
|
||||||
|
psql) |
||||||
|
PGPORT=5432 |
||||||
|
export PGPORT |
||||||
|
#Bei Betrieb von Postgres (remote) muss für psql |
||||||
|
#unter cygwin die Umgebungsvariable PGHOST gesetzt sein |
||||||
|
#Sonst versucht er eine Socket Connection |
||||||
|
#PGHOST und PGPORT müssen auf den SOS-Rechner zeigen |
||||||
|
PGHOST=sospos_host |
||||||
|
export PGHOST |
||||||
|
#PGUSER: nur Datenbank, nicht Betriebssystem |
||||||
|
PGUSER=sospos |
||||||
|
export PGUSER |
||||||
|
#Prüfen ob der PATH erweitert werden muss |
||||||
|
#Standard-Installationsverz. von Postgres ist |
||||||
|
PGPATH=/usr/local/pgsql |
||||||
|
#Nur bei hisinone: |
||||||
|
#JDBC_PARAM="set search_path to hisinone;" |
||||||
|
#unter Win wäre dies PGPATH=/cygdrive/c/Programme/PostgreSQL/8.0-beta1 |
||||||
|
#unter cygwin liegen die binaries direkt in /bin |
||||||
|
export PGPATH |
||||||
|
#Diese Variablen dürfen nicht verändert werden: |
||||||
|
export PGDATESTYLE=German |
||||||
|
O_DESCR=$SUPERX_DIR/db/conf/unldescr_postgres_copy.xml |
||||||
|
export O_DESCR |
||||||
|
|
||||||
|
;; |
||||||
|
|
||||||
|
esac |
||||||
|
|
||||||
|
|
||||||
|
#SOS-Versionsnummer (Ganzzahl) 6,7,8,9,10,11 |
||||||
|
#Wenn Sie eine höhere Versionnummer einsetzen, nehmen Sie einfach |
||||||
|
#die letztmögliche. |
||||||
|
VERSION=11 |
||||||
|
export VERSION |
||||||
|
#ab hier werden Daten ausgewertet: |
||||||
|
start_stud_sem=19881; export start_stud_sem #sos-studenten und fächer |
||||||
|
start_pruef_sem=19881; export start_pruef_sem #Prüfungen |
||||||
|
# |
||||||
|
|
||||||
|
#Wird immer komplett entladen, oder nur die Änderungen? (true/false) |
||||||
|
#Bie derErstinstallation und in der Implementierungsphase empfehlen wir true |
||||||
|
SOS_UNL_COMPLETE=true |
||||||
|
export SOS_UNL_COMPLETE |
||||||
|
|
||||||
|
|
||||||
|
#Transaktionen abschalten? |
||||||
|
TRANSACTION_OFF="" |
||||||
|
#Wenn Transaktionen eingeschaltet sind und die Protokoll-Tabellen groß sind, |
||||||
|
#dann sollte dieses ent-kommentiert sein. |
||||||
|
#TRANSACTION_OFF="SET ISOLATION TO DIRTY READ;" |
||||||
|
export TRANSACTION_OFF |
||||||
|
|
||||||
|
#Sollen die Daten bzgl. matrikelnr anonymisiert werden (Namen kommen sowieso nicht rüber)? |
||||||
|
#Wenn Sie true wählen, müssen Sie das Script ausführen, das die Matrikelnummern |
||||||
|
SOS_UNL_ANON=false |
||||||
|
export SOS_UNL_ANON |
||||||
|
|
||||||
|
#setzen Sie POS_PNR auf 0, um alle Prüfungen zu entladen: |
||||||
|
POS_PNR=0 |
||||||
|
#Vorsicht: viele Daten... |
||||||
|
#Sinnvoller ist es die Einzelprüfungen zu entladen, die gewünscht sind |
||||||
|
#z.B. |
||||||
|
#POS_PNR='9390,9490,9690,9700' |
||||||
|
#Dies sind Prüfungsnummern, die nicht in hskonst verzeichnet sind. |
||||||
|
export POS_PNR |
||||||
|
|
||||||
|
|
||||||
|
#gibt es weitere Filter für die LAB oder nicht. |
||||||
|
#Standardmäßig werden anerkannte Prüfungen gefiltert mit dem Ausdruck |
||||||
|
LAB_FILTER="AND (lab.panerk is null or lab.panerk != 'J')" |
||||||
|
export LAB_FILTER |
||||||
|
|
||||||
|
#Sollen Name/Vorname/Handynr(Semesteranschrift) der Studierenden entladen werden? |
||||||
|
#Wenn ja, dann ist der Wert "true", wenn nein, dann ist es "false" |
||||||
|
STUD_IDENT=false |
||||||
|
export STUD_IDENT |
||||||
|
#Sollen Name/Vorname der Prüfer entladen werden? |
||||||
|
#Wenn ja, dann ist der Wert "true", wenn nein, dann ist es "false" |
||||||
|
PRUEFER_NAME=false |
||||||
|
export PRUEFER_NAME |
||||||
|
|
||||||
|
#Nur HISinOne-STU: sollen Personattribute entladen werden, z.B. personattributetype.id 1,2,3: |
||||||
|
#PERSONATTRIBUTE_IDS="1,2,3" |
||||||
|
#export PERSONATTRIBUTE_IDS |
||||||
|
|
||||||
|
|
||||||
|
ERRORMAIL=superx@localhost |
||||||
|
export ERRORMAIL |
||||||
|
LOGMAIL="$ERRORMAIL" |
||||||
|
export LOGMAIL |
||||||
|
#Name des ausführbaren Mailprogramms, mail oder mutt: |
||||||
|
MAILPROG="mail" |
||||||
|
export MAILPROG |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#Die folgenden Parameter müssen wahrscheinlich nicht geändert werden: |
||||||
|
#DBNLS=2 ; export DBNLS |
||||||
|
#PATH=${PATH}:${INFORMIXDIR}/bin ; export PATH |
||||||
|
DBASE=sospos ; export DBASE |
||||||
|
DBDELIMITER="^" ; export DBDELIMITER |
||||||
|
## |
||||||
|
DBDATE=DMY4. ; export DBDATE |
||||||
|
##Pfad für Entladedaten: |
||||||
|
SOS_PFAD=. |
||||||
|
export SOS_PFAD |
||||||
|
SOS_LOAD_PFAD=$SOS_PFAD |
||||||
|
export SOS_LOAD_PFAD |
||||||
|
##hier muss Unterverzeichnis unl existieren! |
||||||
|
LOG=$SOS_PFAD/sos_unload.err |
||||||
|
export LOG |
||||||
|
DATEFILE=$SOS_PFAD/superx.datum |
||||||
|
export DATEFILE |
||||||
|
|
||||||
|
if [ "$SOS_UNL_COMPLETE" = "true" ] |
||||||
|
then |
||||||
|
DATUM="01.01.1900" |
||||||
|
else |
||||||
|
DATUM=`tail -1 $SOS_PFAD/superx.datum` |
||||||
|
fi |
||||||
|
|
||||||
|
#Beim Push Entladen benötigte jars nach ./lib/kopieren: |
||||||
|
#jfor-0.7.2rc1.jar, postgresql-9.2-1002.jdbc4.jar, superx4.9.jar |
||||||
|
#LIB_PATH=$SOS_LOAD_PFAD/lib |
||||||
|
#JDBC_CLASSPATH="." ; for i in `ls $LIB_PATH/*.jar` ; do JDBC_CLASSPATH=$JDBC_CLASSPATH:$i ; done |
||||||
|
#export JDBC_CLASSPATH |
||||||
|
#XML_CLASSPATH="" |
||||||
|
#export XML_CLASSPATH |
||||||
|
|
||||||
|
|
||||||
|
#COPY_METHOD kann rsync oder scp sein |
||||||
|
COPY_METHOD=rsync; export COPY_METHOD |
||||||
|
#OPTIONEN für scp z.B. |
||||||
|
#SCP_OPTS="-p -B -i /home/sospos/.ssh/superxkey" |
||||||
|
#export SCP_OPTS |
||||||
|
#Default für $SOS_LOAD_PFAD: Hier muss Unterverzeichnus unl existieren. |
||||||
|
REMOTE_DIR="/home/superx/db/module/sos/rohdaten" |
||||||
|
export REMOTE_DIR |
||||||
|
#Defaultuser |
||||||
|
REMOTE_USER="superx" |
||||||
|
export REMOTE_USER |
||||||
|
#Defaulthostname / IP-Nr. des SuperX-DB-Servers, auf den die Rohdaten kopiert werden |
||||||
|
REMOTE_HOST="superx" |
||||||
|
export REMOTE_HOST |
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,33 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||||
|
<superx-unload version="4.0"> |
||||||
|
<module id="msg" version="1.5" systeminfo_id="7">MSG-Modul</module> |
||||||
|
|
||||||
|
<parameters> |
||||||
|
<!-- Gruppe Systemparameter --> |
||||||
|
<param name="VERSION" value="13" defaultValue="13" description="Version des Vorsystems." priority="1" sourcesystem="0" |
||||||
|
wertebereich="12" ab_version=">6.0" gruppe="Systemparameter" > |
||||||
|
<comment>Wird nicht mehr gepflegt. Ab SOSPOS-Version 13 immer auf 13 setzen, bei HISinOne wird sie automatisch gesetzt.</comment></param> |
||||||
|
<param name="msg_start_pruef_sem" defaultValue="19911" description="Startsemester Prüfungen:" priority="1" sourcesystem="0" |
||||||
|
wertebereich="SEMESTER" ab_version=">6.0" gruppe="Systemparameter" > |
||||||
|
<comment>Ab welchem Prüfungssemester sollen Prüfungen entladen werden? z.B. 20221 für SoSe 2022</comment></param> |
||||||
|
<param name="EXTERNAL_SUBJECTS" defaultValue="false" description="Sollen externe Fächer entladen werden? "><comment> Wenn ja, dann ist der Wert "true", wenn nein, dann ist er "false"</comment></param> |
||||||
|
</parameters> |
||||||
|
<sourcesystems> |
||||||
|
<sourcesystem name="sospos" description="SOSPOS-GX-Datenbank" /> |
||||||
|
<sourcesystem name="hisinone" description="HISinOne-Datenbank" default="true"/> |
||||||
|
<sourcesystem name="co" description="CampusOnline-Datenbank" /> |
||||||
|
|
||||||
|
</sourcesystems> |
||||||
|
|
||||||
|
<unload-job id="msg_abp" extraction-table="" extraction-script="" transfer-unload-file="unl/msg_abp.unl" > |
||||||
|
<comment> Abschlussprüfungen</comment> |
||||||
|
<extraction-sql sourcesystem="" database="" version=""> |
||||||
|
<![CDATA[ |
||||||
|
|
||||||
|
select * from xdummy where 1=0; |
||||||
|
|
||||||
|
]]> |
||||||
|
</extraction-sql> |
||||||
|
</unload-job> |
||||||
|
|
||||||
|
</superx-unload> |
||||||
@ -0,0 +1,208 @@ |
|||||||
|
--(c) 2011 Andre Knieschewski |
||||||
|
--Freemarker Template |
||||||
|
--Achtung: Macro fügt Inhalte ein |
||||||
|
--Bitte nur Freemarker Variablen füllen |
||||||
|
|
||||||
|
<#assign masken = [ |
||||||
|
{"mask":"49000", "filename":"tabelle_html_datenblatt.xsl", "ord":"1"}, |
||||||
|
{"mask":"49040", "filename":"tabelle_html_datenblatt.xsl", "ord":"1"} |
||||||
|
] /> |
||||||
|
|
||||||
|
<#assign stylesheet = [ |
||||||
|
] /> |
||||||
|
|
||||||
|
<#assign stylesheet_field = [ |
||||||
|
|
||||||
|
] /> |
||||||
|
|
||||||
|
--Hier eventuell notwendige updates/delete's auf die Tabellen sx_mask_style, sx_stylesheets oder stylesheet_field einfügen. |
||||||
|
|
||||||
|
|
||||||
|
<@sx_stylesheets_insert |
||||||
|
m_masken=masken |
||||||
|
m_stylesheet=stylesheet |
||||||
|
m_stylesheet_field=stylesheet_field |
||||||
|
/> |
||||||
|
|
||||||
|
|
||||||
|
<#macro sx_stylesheets_insert m_masken m_stylesheet m_stylesheet_field> |
||||||
|
|
||||||
|
--Sicherstellen, dass keine Duplikate vorkommen: |
||||||
|
--#################################################################################################### |
||||||
|
<#foreach column in m_masken> |
||||||
|
delete from sx_mask_style where maskeninfo_id=${column.mask} and stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}') and ord=${column.ord}; |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
<#foreach column in m_stylesheet_field> |
||||||
|
delete from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}'); |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Stylesheets füllen |
||||||
|
--#################################################################################################### |
||||||
|
create temp table tmp_stylesheets ( |
||||||
|
tid serial not null, |
||||||
|
filename CHAR(255) , |
||||||
|
caption CHAR(255) , |
||||||
|
description CHAR(255) , |
||||||
|
relation CHAR(10) , |
||||||
|
useragent CHAR(255) , |
||||||
|
contenttype CHAR(200) , |
||||||
|
is_generic smallint, |
||||||
|
toolbar_icon_filepath VARCHAR(255) , |
||||||
|
usage_resultset_data CHAR(10) default 'T' , |
||||||
|
stylesheet_type CHAR(10) default 'XSL' , |
||||||
|
jr_datasource CHAR(10) |
||||||
|
|
||||||
|
); |
||||||
|
|
||||||
|
create temp table tmp_hilf (tid integer); |
||||||
|
insert into tmp_hilf select max(tid) from sx_stylesheets; |
||||||
|
update tmp_hilf set tid=1 where tid is null; |
||||||
|
|
||||||
|
<#assign counter_tid = 1 /> |
||||||
|
<#foreach column in m_stylesheet> |
||||||
|
insert into tmp_stylesheets (tid, |
||||||
|
filename, |
||||||
|
caption, |
||||||
|
description, |
||||||
|
relation, |
||||||
|
contenttype, |
||||||
|
is_generic, |
||||||
|
toolbar_icon_filepath , |
||||||
|
usage_resultset_data , |
||||||
|
stylesheet_type , |
||||||
|
jr_datasource) |
||||||
|
select max(tid)+${counter_tid},'${column.filename}', |
||||||
|
'${column.caption}', |
||||||
|
'${column.description}', |
||||||
|
'${column.relation}', |
||||||
|
'${column.contenttype}', |
||||||
|
${column.is_generic}, |
||||||
|
'${column.toolbar_icon_filepath}' , |
||||||
|
'${column.usage_resultset_data}' , |
||||||
|
'${column.stylesheet_type}' , |
||||||
|
'${column.jr_datasource}' |
||||||
|
from tmp_hilf; |
||||||
|
<#assign counter_tid = counter_tid + 1 /> |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')> |
||||||
|
update sx_stylesheets set is_generic=1 |
||||||
|
where filename in (select T.filename from tmp_stylesheets T where T.is_generic=1); |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','stylesheet_type')> |
||||||
|
update sx_stylesheets set stylesheet_type=T.stylesheet_type, |
||||||
|
contenttype=T.contenttype, |
||||||
|
usage_resultset_data=T.usage_resultset_data, |
||||||
|
jr_datasource=T.jr_datasource |
||||||
|
from tmp_stylesheets T |
||||||
|
where T.filename=sx_stylesheets.filename |
||||||
|
and sx_stylesheets.filename in (select T2.filename from tmp_stylesheets T2); |
||||||
|
</#if> |
||||||
|
|
||||||
|
--delete für tml_stylesheets hinzugefügt #ak 06.03.2013 |
||||||
|
delete from tmp_stylesheets where filename in (select filename from sx_stylesheets); |
||||||
|
|
||||||
|
|
||||||
|
insert into sx_stylesheets (tid, |
||||||
|
filename, caption, description, relation, useragent, contenttype |
||||||
|
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')> |
||||||
|
,is_generic |
||||||
|
</#if> |
||||||
|
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','toolbar_icon_filepath')> |
||||||
|
,toolbar_icon_filepath , |
||||||
|
usage_resultset_data , |
||||||
|
stylesheet_type , |
||||||
|
jr_datasource |
||||||
|
</#if> |
||||||
|
) |
||||||
|
SELECT tid, filename, caption, description, relation, useragent, contenttype |
||||||
|
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')> |
||||||
|
,is_generic |
||||||
|
</#if> |
||||||
|
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','toolbar_icon_filepath')> |
||||||
|
,toolbar_icon_filepath , |
||||||
|
usage_resultset_data , |
||||||
|
stylesheet_type , |
||||||
|
jr_datasource |
||||||
|
</#if> |
||||||
|
FROM tmp_stylesheets; |
||||||
|
|
||||||
|
drop table tmp_stylesheets; |
||||||
|
|
||||||
|
|
||||||
|
-- Mask Style füllen |
||||||
|
--#################################################################################################### |
||||||
|
create temp table tmp_mask_style ( |
||||||
|
tid serial not null, |
||||||
|
maskeninfo_id INTEGER , |
||||||
|
stylesheet_id INTEGER , |
||||||
|
ord SMALLINT, |
||||||
|
filename char(255) |
||||||
|
); |
||||||
|
|
||||||
|
delete from tmp_hilf; |
||||||
|
insert into tmp_hilf select max(tid) from sx_mask_style; |
||||||
|
update tmp_hilf set tid=1 where tid is null; |
||||||
|
|
||||||
|
<#assign counter_tid = 1 /> |
||||||
|
<#foreach column in m_masken> |
||||||
|
insert into tmp_mask_style (tid,maskeninfo_id,ord,filename) |
||||||
|
select max(tid)+${counter_tid},${column.mask},${column.ord},'${column.filename}' from tmp_hilf; |
||||||
|
|
||||||
|
update tmp_mask_style set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}') |
||||||
|
where filename='${column.filename}'; |
||||||
|
<#assign counter_tid = counter_tid + 1 /> |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
insert into sx_mask_style ( tid, maskeninfo_id, stylesheet_id, ord) |
||||||
|
SELECT tid, maskeninfo_id, stylesheet_id, ord |
||||||
|
FROM tmp_mask_style; |
||||||
|
|
||||||
|
drop table tmp_mask_style; |
||||||
|
|
||||||
|
|
||||||
|
--Field zu Stylesheet Zuordnungen: |
||||||
|
--#################################################################################################### |
||||||
|
CREATE temp TABLE tmp_stylesheet_field |
||||||
|
( |
||||||
|
tid serial NOT NULL, |
||||||
|
stylesheet_id INTEGER, |
||||||
|
tablename char(255), |
||||||
|
fieldname char(255), |
||||||
|
filename char(255) |
||||||
|
); |
||||||
|
|
||||||
|
delete from tmp_hilf; |
||||||
|
insert into tmp_hilf select max(tid) from stylesheet_field; |
||||||
|
update tmp_hilf set tid=1 where tid is null; |
||||||
|
|
||||||
|
<#assign counter_tid = 1 /> |
||||||
|
<#foreach column in m_stylesheet_field> |
||||||
|
INSERT INTO tmp_stylesheet_field (tid, filename, tablename, fieldname) |
||||||
|
select max(tid)+${counter_tid}, '${column.filename}', '${column.tablename}', '${column.fieldname}' from tmp_hilf; |
||||||
|
|
||||||
|
update tmp_stylesheet_field set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}') |
||||||
|
where filename='${column.filename}'; |
||||||
|
<#assign counter_tid = counter_tid + 1 /> |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
insert into stylesheet_field ( tid, stylesheet_id, tablename, fieldname) |
||||||
|
SELECT tid, stylesheet_id, tablename, fieldname |
||||||
|
FROM tmp_stylesheet_field; |
||||||
|
|
||||||
|
drop table tmp_stylesheet_field; |
||||||
|
drop table tmp_hilf; |
||||||
|
|
||||||
|
|
||||||
|
<#if SQLdialect='Postgres'> |
||||||
|
select sp_update_sequence('sx_stylesheets'); |
||||||
|
select sp_update_sequence('sx_mask_style'); |
||||||
|
select sp_update_sequence('stylesheet_field'); |
||||||
|
</#if> |
||||||
|
|
||||||
|
</#macro> |
||||||
Loading…
Reference in new issue