32 changed files with 3676 additions and 116 deletions
@ -0,0 +1,500 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1 @@
|
||||
160770^7^ |
||||
@ -0,0 +1,22 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1 @@
|
||||
16^160770^ |
||||
@ -0,0 +1,45 @@
@@ -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 @@
@@ -0,0 +1 @@
|
||||
49000^370^ |
||||
@ -0,0 +1,22 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1 @@
|
||||
370^49000^ |
||||
@ -0,0 +1,34 @@
@@ -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 @@
@@ -0,0 +1 @@
|
||||
49040^370^ |
||||
@ -0,0 +1,17 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1 @@
|
||||
370^49040^ |
||||
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash |
||||
echo "------------------------------------------------------------" |
||||
echo |
||||
module_drop.x lm $LM_PFAD |
||||
|
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash |
||||
|
||||
module_install.x lm $LM_PFAD |
||||
|
||||
@ -0,0 +1,65 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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