47110^Stammdaten NRW^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
\
-- ################\
-- # Erläuterung: #\
-- ################\
-- bezugsart:\
-- Q = Quartal\
-- S = Semester\
-- J = Jahr\
-- A = Akademisches Jahr BW\
-- B = Beginner SA (Studeinanfäger)\
-- P = Prüfungen SA (Absolventen) (war früher U)\
\
\
--######################################\
\
--start ergtabelle \
\
>"?replace("'","")?replace("*","%")+"%"/>\
\
select trim(K.id) as id,trim(R.gruppe_1) as gruppe_1,\
trim(R.gruppe_2) as gruppe_2,\
trim(K.name) as name,\
trim(K.quelltabelle) as quelltabelle,\
trim(K.quellfeld) as quellfeld,\
K.bedingung as bedingung,\
trim(K.stichtagsart) as stichtagsart,\
trim(K.bezugsart) as bezugsart,\
trim(K.zeitfeld) as zeitfeld,\
R.ebene,\
R.ord_nr,\
K.einheit,\
K.beschreibung\
FROM kenn_katalog K, kenn_katalog_rpt R\
where K.id=R.katalog_id\
and R.report_id=<>\
/* and R.gruppe_1 like ('${kennznr}') and <>!='muss sein, da der Feld optional ist' */\
/* and K.stichtagsart in (select druck from kenn_stichtagsart where aktiv='1' and apnr in (<>)) */\
--Sortierung nach ord_nr wichtig wg. Querabhängigkeiten\
order by 12;\
]]>\
\
\
\
select min(tid) from kenn_semester\
where 1=1\
/* and get_akad_jahr(tid,'A') >= <> */\
/* and get_akad_jahr(tid,'A') <= <> */;\
\
\
select max(tid) from kenn_semester\
where 1=1\
/* and get_akad_jahr(tid,'A') >= <> */\
/* and get_akad_jahr(tid,'A') <= <> */;\
\
\
select min(ord) from aggregierung\
where kategorie='KENN-Jahr'\
/* and ord >= <> */\
/* and ord <= <> */;\
\
\
select max(ord) from aggregierung\
where kategorie='KENN-Jahr'\
/* and ord >= <> */\
/* and ord <= <> */;\
\
\
select min(tid) from kenn_semester\
where 1=1\
/* and akad_jahr_anf >= <> */\
/* and akad_jahr_anf <= <> */;\
\
\
select max(tid) from kenn_semester\
where 1=1\
/* and akad_jahr_anf >= <> */\
/* and akad_jahr_anf <= <> */;\
\
\
select min(tid) from kenn_semester\
where 1=1\
/* and akad_jahr_absolv >= <> */\
/* and akad_jahr_absolv <= <> */;\
\
\
select max(tid) from kenn_semester\
where 1=1\
/* and akad_jahr_absolv >= <> */\
/* and akad_jahr_absolv <= <> */;\
\
\
\
<#assign lfb_feldinhalt="''" />\
/* <#assign lfb_feldinhalt= .vars["Externes Produkt"].allNeededKeys /> --<> */\
\
--URL-Parameter für LFB-Detailmaske Sachsen:\
<#assign seit_jahr_param="" />\
<#if "<>" != "">\
<#assign seit_jahr_param="&Start-Jahr=<>" />\
#if>\
<#assign bis_jahr_param="" />\
<#if "<>" != "">\
<#assign bis_jahr_param="&End-Jahr=<>" />\
#if>\
<#assign hochschule_param="" />\
<#if "<>" != "">\
/* <#assign hs="<>" /> */\
<#assign hochschule_param="&Hochschule="+ hs?replace("'", "") />\
#if>\
\
create temp table tmp_kennz\
(\
tid integer,\
hs_nr integer,\
katalog_id CHAR(100),\
hochschule_str nchar(255),\
stichtagsart nchar(255),\
beschreibung char(255),\
zeitraum_int integer,\
zeitraum_str char(255), \
bezugsart char(1),\
ebene smallint,\
ord_nr smallint,\
gruppe_1 char(40),\
gruppe_2 char(40),\
betrag decimal(14,2),\
einheit char(255), \
erlaeuterung varchar(255),\
nextmask varchar(250),\
nexttable varchar(250),\
jahr integer,\
semester integer\
) <@informixnolog/>;\
create temp table tmp_kennz3\
(tid integer,\
hs_nr integer,\
katalog_id CHAR(100),\
hochschule_str nchar(255),\
stichtagsart nchar(255),\
beschreibung char(255),\
zeitraum_int integer,\
zeitraum_str char(255), \
bezugsart char(1),\
ebene smallint,\
gruppe_1 char(40),\
gruppe_2 char(40),\
betrag decimal(14,2),\
einheit char(255),\
erlaeuterung varchar(255)\
) <@informixnolog/>;\
\
create temp table tmp_betrag1\
(hs_nr integer,\
zeitraum_int integer,\
betrag decimal(14,2)\
) <@informixnolog/>;\
\
create temp table tmp_betrag2\
(hs_nr integer,\
zeitraum_int integer,\
betrag decimal(14,2)\
) <@informixnolog/>;\
\
\
\
\
<#macro bedingung zeitfeld bezugsart stichtagsart>\
<#if zeitfeld='null::integer' >\
(1=1)\
<#else>\
<#switch bezugsart>\
<#case "A">\
--Akad. Studienjahr ist etwas komplizierter\
--Def.: WS + darauf folgendes SS des im Zähler betrachteten Studienjahres\
<#if zeitfeld='jahr' >\
(\
1=1 \
/*and jahr in\
(SELECT K.bezugszeit FROM kenn_stichtag K where K.bezugsart='J'\
and K.stichtagsart='${stichtagsart}' and K.exportieren=<> ) */\
/* and jahr in\
(SELECT K.bezugszeit FROM kenn_stichtag K where K.bezugsart='J'\
and K.stichtagsart='${stichtagsart}' and K.berechnen=<> ) */\
)\
<#else>\
--Semester\
(\
1=1\
/* and ${zeitfeld} in\
(SELECT K.bezugszeit FROM kenn_stichtag K where K.bezugsart='S'\
and K.stichtagsart='${stichtagsart}' and K.exportieren=<>) */\
/* and ${zeitfeld} in\
(SELECT K.bezugszeit FROM kenn_stichtag K where K.bezugsart='S'\
and K.stichtagsart='${stichtagsart}' and K.berechnen=<> )*/\
\
)\
#if>\
<#break>\
\
<#default>\
1=1\
/* and ${zeitfeld} in (SELECT K.bezugszeit FROM kenn_stichtag K where K.bezugsart='${bezugsart}'\
and K.stichtagsart='${stichtagsart}'\
and K.exportieren=<>) */\
/* and ${zeitfeld} in (SELECT K.bezugszeit FROM kenn_stichtag K where K.bezugsart='${bezugsart}'\
and K.stichtagsart='${stichtagsart}'\
and K.berechnen=<>) */\
\
\
#switch>\
#if>\
#macro>\
\
\
--Erste Schleife für alle zu berechnenden Werte, wo quelltabelle gefüllt ist\
<#if kenn_katalog?has_content >\
<#foreach row_kennzahl in kenn_katalog>\
<#if row_kennzahl.id != "dummy" && row_kennzahl.id != "dummy1">\
--Variablen erheben\
<#assign quelltabelle= row_kennzahl.quelltabelle />\
<#assign quellfeld= row_kennzahl.quellfeld />\
<#assign filter= row_kennzahl.bedingung />\
<#assign stichtagsart= row_kennzahl.stichtagsart />\
<#assign bezugsart= row_kennzahl.bezugsart />\
<#assign zeitfeld= row_kennzahl.zeitfeld />\
<#assign ebene= row_kennzahl.ebene />\
<#assign ord_nr= row_kennzahl.ord_nr />\
<#assign gruppe_1= row_kennzahl.gruppe_1 />\
<#assign gruppe_2= row_kennzahl.gruppe_2 />\
<#assign einheit= row_kennzahl.einheit />\
<#assign beschreibung= row_kennzahl.beschreibung />\
\
\
<#assign zeit_bedingung="1=1" />\
\
<#switch bezugsart>\
<#case "Q">\
<#if "<>" != "" && "<>" != "">\
<#assign zeit_bedingung= "jahr between <> and <>" />\
#if>\
<#if "<>" = "" && "<>" != "">\
<#assign zeit_bedingung= "jahr <= <>" />\
#if>\
<#if "<>" != "" && "<>" = "">\
<#assign zeit_bedingung= "jahr >= <>" />\
#if>\
<#break>\
<#case "S">\
<#if "<>" != "" && "<>" != "">\
<#assign zeit_bedingung= zeitfeld + " between <> and <>" />\
#if>\
<#if "<>" = "" && "<>" != "">\
<#assign zeit_bedingung= zeitfeld + " <= <>" />\
#if>\
<#if "<>" != "" && "<>" = "">\
<#assign zeit_bedingung= zeitfeld + " >= <>" />\
#if>\
<#if "<>" != "" && "<>" != "">\
<#assign zeit_bedingung= "get_akad_jahr("+zeitfeld+",'B') between <> and <>" />\
#if>\
<#if "<>" = "" && "<>" != "">\
<#assign zeit_bedingung= "get_akad_jahr("+zeitfeld+",'B') <= <>" />\
#if>\
<#if "<>" != "" && "<>" = "">\
<#assign zeit_bedingung= "get_akad_jahr("+zeitfeld+",'B') >= <>" />\
#if>\
<#break>\
<#case "J">\
<#if "<>" != "" && "<>" != "">\
<#assign zeit_bedingung= zeitfeld + " between <> and <>" />\
#if>\
<#if "<>" = "" && "<>" != "">\
<#assign zeit_bedingung= zeitfeld + " <= <>" />\
#if>\
<#if "<>" != "" && "<>" = "">\
<#assign zeit_bedingung= zeitfeld + " >= <>" />\
#if>\
<#break>\
<#case "A">\
<#if zeitfeld="sem">\
<#if sem_akad_bw_von?trim != "">\
<#assign zeit_bedingung= zeit_bedingung+ " and " + zeitfeld + ">="+ sem_akad_bw_von />\
#if>\
<#if sem_akad_bw_bis?trim != "">\
<#assign zeit_bedingung= zeit_bedingung+ " and "+ zeitfeld + "<="+ sem_akad_bw_bis />\
#if>\
#if>\
<#if zeitfeld?index_of("jahr") > -1 >\
<#if jahr_akad_bw_von?trim != "">\
<#assign zeit_bedingung= zeit_bedingung+ " and " + zeitfeld + ">="+ jahr_akad_bw_von />\
#if>\
<#if jahr_akad_bw_bis?trim != "">\
<#assign zeit_bedingung= zeit_bedingung+ " and "+ zeitfeld + "<="+ jahr_akad_bw_bis />\
#if>\
#if>\
<#break>\
<#case "B">\
<#if sem_akad_sa_anf_von?trim != "">\
<#assign zeit_bedingung= zeit_bedingung+ " and " + zeitfeld + ">="+ sem_akad_sa_anf_von />\
#if>\
<#if sem_akad_sa_anf_bis?trim != "">\
<#assign zeit_bedingung= zeit_bedingung+ " and "+ zeitfeld + "<="+ sem_akad_sa_anf_bis />\
#if>\
<#break>\
<#case "P">\
<#if sem_akad_sa_absolv_von?trim != "">\
<#assign zeit_bedingung= zeit_bedingung+ " and "+ zeitfeld + " >="+ sem_akad_sa_absolv_von />\
#if>\
<#if sem_akad_sa_absolv_bis?trim != "">\
<#assign zeit_bedingung= zeit_bedingung+ " and "+ zeitfeld + "<="+ sem_akad_sa_absolv_bis />\
#if>\
\
<#break>\
<#default>\
<#assign zeit_bedingung= "1=1" />\
#switch>\
\
--Zuerst die Felder, die aus KENN-Tabellen generiert werden\
--Achtung: die folgenden Tabellennamen müssen auch in Maske 18000 eingetragen werden\
<#assign lfb_colname="" />\
<#if quelltabelle != "" >\
<#if quelltabelle=="kenn_sos_stg" || quelltabelle=="kenn_sos_lab" \
|| quelltabelle=="kenn_sos_stg" || quelltabelle=="kenn_flaeche"\
|| quelltabelle=="kenn_pbv_aggr" || quelltabelle=="kenn_konto_aggr"\
|| quelltabelle=="kenn_anlagen_aggr" || quelltabelle=="kenn_stupl">\
<#assign lfb_colname="extkotr" />\
#if>\
<#if quelltabelle== "kenn_busa_aggr">\
<#assign lfb_colname="projnr" />\
#if>\
<#if quelltabelle== "kenn_vtbu_aggr">\
<#assign lfb_colname="ziel_projnr" />\
#if>\
<#if quelltabelle== "kenn_zahl_wert">\
<#if row_kennzahl.id == "FORSCH_HABILITATION_KOEPFE">\
<#assign lfb_colname="ch110_institut" />\
<#else>\
<#if row_kennzahl.id == "LEHR_UNBER_ANG" || row_kennzahl.id == "LEHRANG_LEHRAUFTRAEGE" >\
<#assign lfb_colname="(select min(substring(SG.key_ext from 1 for 10)) from kenn_inst_to_ext SG where SG.hs_nr=kenn_zahl_wert.hs_nr and SG.instnr=kenn_zahl_wert.ch110_institut)" />\
<#else>\
<#assign lfb_colname="(select min(SG.k_extkotr) from kenn_stug SG where SG.hs_nr=kenn_zahl_wert.hs_nr and SG.stug_key=kenn_zahl_wert.stugkey)" />\
#if>\
#if>\
#if>\
<#if quelltabelle== "kenn_su_imp_stud" || quelltabelle== "kenn_auslastung" || quelltabelle== "kenn_proj_gege">\
<#assign lfb_colname="k_extkotr" />\
#if>\
\
insert into tmp_kennz(\
hs_nr ,\
katalog_id,\
stichtagsart ,\
beschreibung ,\
zeitraum_int,\
bezugsart,\
ebene,\
ord_nr,\
gruppe_1,\
gruppe_2,\
betrag,\
einheit,\
erlaeuterung)\
\
select hs_nr,\
'${row_kennzahl.id}'::char(100),\
'${stichtagsart}'::nchar(255),\
'${row_kennzahl.name}' <#if bezugsart = "A" || bezugsart = "P" || bezugsart = "B" && zeitfeld?index_of("sem") > -1 && quelltabelle != ""> || nvl(' (' || (select trim(min(kurz)) from kenn_semester where tid=${quelltabelle}.${zeitfeld}) || ')','') #if>,\
<#if (bezugsart = "A" || bezugsart = "P" || bezugsart = "B") && zeitfeld?index_of("sem") > -1>\
--akad. Jahr automatisch ermitteln\
get_akad_jahr(${zeitfeld},'${bezugsart}'),\
--val(substring('' || ${zeitfeld} from 1 for 4)),\
<#else>\
${zeitfeld},\
#if>\
'${bezugsart}'::char(1),\
${ebene}::smallint,\
${ord_nr}::smallint,\
'${gruppe_1}'::char(40),\
'${gruppe_2}'::char(40),\
${quellfeld},\
'${einheit}'::varchar(255),\
'${beschreibung}'::varchar(255)\
from xdummy left outer join ${quelltabelle} on ( \
<@bedingung zeitfeld="${zeitfeld}" bezugsart="${bezugsart}" stichtagsart="${stichtagsart}"/>\
${filter}\
and ${zeit_bedingung}\
and LPAD(hs_nr::TEXT, 4, '0') in <@printkeys .vars["Hochschule"].allNeededKeys /> \
\
<#if lfb_feldinhalt != "''" && lfb_colname != "" >\
and ${lfb_colname} in ${lfb_feldinhalt}\
#if>\
)\
--nicht doppelt einfügen\
where 0=(select count(*) from tmp_kennz K where K.katalog_id= '${row_kennzahl.id}' and (K.gruppe_1='${gruppe_1}' or K.gruppe_1 is null or trim(K.gruppe_1)=''))\
group by 1,2,3,4,5,6;\
#if>\
#if> --wenn nicht "dummy"\
#foreach>\
#if>\
<@selectintotmp select="*" source="tmp_kennz" target="tmp_kennz_basis">\
@selectintotmp> <@informixnolog/>;\
\
\
--nun die berechneten Kennzahlen\
<#list 1..5 as i>\
<#if kenn_katalog?has_content >\
<#foreach row_kennzahl in kenn_katalog>\
<#if row_kennzahl.id != "dummy">\
--Variablen erheben\
<#assign quelltabelle= row_kennzahl.quelltabelle />\
<#assign quellfeld= row_kennzahl.quellfeld />\
<#assign filter= row_kennzahl.bedingung />\
<#assign stichtagsart= row_kennzahl.stichtagsart />\
<#assign bezugsart= row_kennzahl.bezugsart />\
<#assign zeitfeld= row_kennzahl.zeitfeld />\
<#assign ebene= row_kennzahl.ebene />\
<#assign ord_nr= row_kennzahl.ord_nr />\
<#assign gruppe_1= row_kennzahl.gruppe_1 />\
<#assign gruppe_2= row_kennzahl.gruppe_2 />\
<#assign einheit= row_kennzahl.einheit />\
<#assign beschreibung= row_kennzahl.beschreibung />\
\
\
\
<#switch bezugsart>\
<#case "Q">\
<#if "<>" != "" && "<>" != "">\
<#assign zeit_bedingung= "jahr between <> and <>" />\
#if>\
<#if "<>" = "" && "<>" != "">\
<#assign zeit_bedingung= "jahr <= <>" />\
#if>\
<#if "<>" != "" && "<>" = "">\
<#assign zeit_bedingung= "jahr >= <>" />\
#if>\
<#break>\
<#case "S">\
<#if "<>" != "" && "<>" != "">\
<#assign zeit_bedingung= zeitfeld + " between <> and <>" />\
#if>\
<#if "<>" = "" && "<>" != "">\
<#assign zeit_bedingung= zeitfeld + " <= <>" />\
#if>\
<#if "<>" != "" && "<>" = "">\
<#assign zeit_bedingung= zeitfeld + " >= <>" />\
#if>\
<#if "<>" != "" && "<>" != "">\
<#assign zeit_bedingung= "get_akad_jahr("+zeitfeld+",'B') between <> and <>" />\
#if>\
<#if "<>" = "" && "<>" != "">\
<#assign zeit_bedingung= "get_akad_jahr("+zeitfeld+",'B') <= <>" />\
#if>\
<#if "<>" != "" && "<>" = "">\
<#assign zeit_bedingung= "get_akad_jahr("+zeitfeld+",'B') >= <>" />\
#if>\
<#break>\
<#case "J">\
<#if "<>" != "" && "<>" != "">\
<#assign zeit_bedingung= zeitfeld + " between <> and <>" />\
#if>\
<#if "<>" = "" && "<>" != "">\
<#assign zeit_bedingung= zeitfeld + " <= <>" />\
#if>\
<#if "<>" != "" && "<>" = "">\
<#assign zeit_bedingung= zeitfeld + " >= <>" />\
#if>\
<#break>\
<#case "A">\
<#assign zeit_bedingung= zeitfeld +" between "+sem_akad_bw_von+" and "+sem_akad_bw_bis />\
<#break>\
<#case "B">\
<#assign zeit_bedingung= zeitfeld +" between "+sem_akad_sa_anf_von+" and "+sem_akad_sa_anf_bis />\
<#break>\
<#case "P">\
<#assign zeit_bedingung= zeitfeld +" between "+sem_akad_sa_absolv_von+" and "+sem_akad_sa_absolv_bis />\
<#break>\
<#default>\
<#assign zeit_bedingung= "1=1" />\
#switch>\
\
\
--Jetzt die berechneten Felder:\
<#if quelltabelle = "" >\
\
--Bei berechneten Feldern steht in Quelltabelle nichts, dafür die Formel in Feldname\
<#assign rsnum=1 />\
\
<#if quellfeld?index_of("/") != -1 || quellfeld?index_of("*") != -1>\
<#if quellfeld?index_of("/") != -1>\
<#assign operator="/" />\
#if>\
<#if quellfeld?index_of("*") != -1>\
<#assign operator="*" />\
#if>\
<#list quellfeld?split(operator) as rs>\
<#if rsnum = 1>\
<#assign betrag1= rs />\
#if>\
<#if rsnum = 2>\
<#assign betrag2= rs />\
#if>\
<#assign rsnum= rsnum+1 />\
#list>\
insert into tmp_betrag1(\
hs_nr ,\
zeitraum_int,\
betrag\
)\
select hs_nr,\
zeitraum_int,\
--sicherstellen dass keien Duplikate reinkommen, wenn eine Kennzahl mehrmals benutzt wird:\
min(betrag)\
from tmp_kennz \
where katalog_id='${betrag1}'\
group by 1,2;\
<#if betrag2?starts_with("2") || betrag2?starts_with("4") >\
--wenn betrag2 keine Variable, sondern eine Zahl ist (z.B. für AVG /2)\
--dann wird nur die 2 übernommen.\
insert into tmp_betrag2(\
hs_nr ,\
zeitraum_int,\
betrag\
)\
select hs_nr,\
zeitraum_int,\
${betrag2}\
from tmp_kennz \
where katalog_id='${betrag1}'; \
<#else>\
insert into tmp_betrag2(\
hs_nr ,\
zeitraum_int,\
betrag )\
select hs_nr,\
zeitraum_int,\
min(betrag)\
from tmp_kennz \
where katalog_id='${betrag2}'\
group by 1,2; \
#if>\
insert into tmp_kennz3(\
hs_nr ,\
stichtagsart ,\
beschreibung ,\
zeitraum_int,\
bezugsart,\
ebene,\
gruppe_1,\
gruppe_2,\
betrag,\
einheit,\
erlaeuterung)\
select Z.hs_nr,\
'${stichtagsart}'::nchar(255),\
'${row_kennzahl.name}'::char(255) ,\
Z.zeitraum_int,\
'${bezugsart}'::char(1),\
${ebene},\
'${gruppe_1}',\
'${gruppe_2}',\
Z.betrag ${operator} N.betrag,\
'{einheit}',\
'{erlaeuterung}'\
from tmp_betrag1 Z, tmp_betrag2 N \
where 1=1\
<#if filter?trim = "">\
and (Z.zeitraum_int=N.zeitraum_int\
or (Z.zeitraum_int is null and N.zeitraum_int is null))\
<#else>\
--Wenn eine Kennzahl aus zwei nicht zusammenpassenden Zeiträumen gebildet wird,\
--(z.B. WS/HHJ) muss im Katalog das Feld bedingung gefüllt sein\
${filter}\
#if>\
<#if operator="/">\
--keine Division durch 0\
and N.betrag != 0\
#if>\
and Z.hs_nr=N.hs_nr;\
#if>\
<#if quellfeld?index_of("+") != -1 >\
--Summe\
<#assign operator="+" />\
insert into tmp_kennz3(\
hs_nr ,\
stichtagsart ,\
beschreibung ,\
zeitraum_int,\
bezugsart,\
ebene,\
gruppe_1,\
gruppe_2,\
betrag,\
einheit,\
erlaeuterung) \
select hs_nr,\
'${stichtagsart}'::nchar(255),\
'${row_kennzahl.name}'::char(255) ,\
zeitraum_int,\
'${bezugsart}'::char(1),\
${ebene}::integer,\
'${gruppe_1}'::char(40),\
'${gruppe_2}'::char(40),\
sum(betrag),\
'${einheit}',\
'${beschreibung}'\
from xdummy left outer join tmp_kennz on \
( katalog_id in (\
<#list quellfeld?split(operator) as rs>\
'${rs?trim}',\
#list>\
'')\
and hs_nr is not null --nur wenn überhaupt ein Wert drin ist\
-- bei Akademischen Jahr soll keine Addition statt finden, wenn eins der beiden Semester keine Zahlen enthält. Das Ergebnis aus der Summe wäre irreführend.\
<#if row_kennzahl.bezugsart = 'A'>\
<#list quellfeld?split(operator) as rs>\
and 0 < (select count(*) from tmp_kennz_basis BS where BS.katalog_id = '${rs}' and BS.zeitraum_int=tmp_kennz.zeitraum_int and BS.betrag is not null)\
#list>\
#if>\
${row_kennzahl.bedingung} )\
group by 1,2,3,4,5,6,7; \
#if>\
\
insert into tmp_kennz(\
hs_nr ,\
katalog_id,\
stichtagsart ,\
beschreibung ,\
zeitraum_int,\
bezugsart,\
ebene,\
ord_nr,\
gruppe_1,\
gruppe_2,\
betrag,\
einheit,\
erlaeuterung)\
select\
hs_nr ,\
'${row_kennzahl.id}'::char(100),\
'${stichtagsart}'::nchar(255),\
'${row_kennzahl.name}'::char(255) ,\
zeitraum_int,\
bezugsart,\
${ebene}::smallint,\
${ord_nr}::smallint,\
'${gruppe_1}'::char(40),\
'${gruppe_2}'::char(40),\
betrag,\
'${einheit}' ,\
'${beschreibung}' \
<#if i=5>\
--nur im letzten Durchgang ein left outer join, um sicherzugehen dass eine Zeile\
--angezeigt wird, auch wenn der Wert fehlt.\
from xdummy left outer join tmp_kennz3 on (1=1)\
<#else>\
from tmp_kennz3\
#if>\
--nicht doppelt einfügen, wg. 5er Schleife:\
where 0=(select count(*) from tmp_kennz K\
where K.katalog_id= '${row_kennzahl.id}'\
and (K.gruppe_1='${gruppe_1}' or K.gruppe_1 is null or trim(K.gruppe_1)='')\
);\
\
delete from tmp_betrag1;\
delete from tmp_betrag2;\
delete from tmp_kennz3;\
#if>\
#if> --wenn nicht dummy\
#foreach>\
#if>\
#list>\
\
-- Wenn eine Kennzahl ausgewählt wird, sollen alle Ebenen angezeigt werden: Ebenen Filter wird ignoriert.\
<#if "<>" = "">\
/* delete from tmp_kennz where ebene > <>; */\
#if>\
\
/* delete from tmp_kennz where substring(gruppe_1 from 1 for 2) != <>; */\
\
update tmp_kennz set hochschule_str=(select name from sxc_hochschulen where hs_nr =LPAD(tmp_kennz.hs_nr::TEXT, 4, '0'));\
update tmp_kennz set zeitraum_str=(select min(druck) from kenn_semester where tid=tmp_kennz.zeitraum_int)\
where bezugsart in ('S','4');\
update tmp_kennz set zeitraum_str=(select name FROM aggregierung where kategorie='COB-Jahr' \
and ord=tmp_kennz.zeitraum_int)\
where bezugsart in ('J','A');\
update tmp_kennz set zeitraum_str=(select min(druck) from kenn_quartale where apnr=tmp_kennz.zeitraum_int)\
where bezugsart='Q';\
update tmp_kennz set zeitraum_str=zeitraum_int where zeitraum_str is null;\
\
update tmp_kennz set nextmask='18580&Hochschule=' || hs_nr || '&Quartal=' || substring('' || zeitraum_int from 5 for 1) || '&Haushaltsjahr=' || substring('' || zeitraum_int from 1 for 4) || '&Kostenarten=5' \
where stichtagsart='Kostenrechnung' \
and katalog_id in ('KOSTEN_ERLOESE_Q');\
\
update tmp_kennz set nextmask='18580&Hochschule=' || hs_nr || '&Quartal=' || substring('' || zeitraum_int from 5 for 1) || '&Haushaltsjahr=' || substring('' || zeitraum_int from 1 for 4) || '&Kostenarten=906' \
where stichtagsart='Kostenrechnung' \
and katalog_id in ('KOSTEN_PERSONAL_Q');\
update tmp_kennz set nextmask='18580&Hochschule=' || hs_nr || '&Quartal=' || substring('' || zeitraum_int from 5 for 1) || '&Haushaltsjahr=' || substring('' || zeitraum_int from 1 for 4) || '&Kostenarten=6' \
where stichtagsart='Kostenrechnung' \
and katalog_id in ('KOSTEN_SACH_Q');\
update tmp_kennz set nextmask='18580&Hochschule=' || hs_nr || '&Quartal=' || substring('' || zeitraum_int from 5 for 1) || '&Haushaltsjahr=' || substring('' || zeitraum_int from 1 for 4) || '&Kostenarten=7' \
where stichtagsart='Kostenrechnung' \
and katalog_id in ('KOSTEN_WEITERE_Q');\
update tmp_kennz set nextmask='18580&Hochschule=' || hs_nr || '&Quartal=' || substring('' || zeitraum_int from 5 for 1) || '&Haushaltsjahr=' || substring('' || zeitraum_int from 1 for 4) || '&Kostenarten=66' \
where stichtagsart='Kostenrechnung' \
and katalog_id in ('KOSTEN_ABSCHR_Q');\
update tmp_kennz set nextmask='18580&Hochschule=' || hs_nr || '&Quartal=' || substring('' || zeitraum_int from 5 for 1) || '&Haushaltsjahr=' || substring('' || zeitraum_int from 1 for 4) || '&Kostenarten=902' \
where stichtagsart='Kostenrechnung' \
and katalog_id in ('KOSTEN_KALK_MIETE_Q');\
\
--update tmp_kennz set nextmask='18600&Hochschule=' || hs_nr || '&cachingcontrol=clearMask' where stichtagsart='Kostenrechnung' and katalog_id in ('KOSTEN_LEHRE_Q','KOSTEN_FORSCHUNG_Q','KOSTEN_DIENST_Q');\
update tmp_kennz set nextmask='18600&Hochschule=' || hs_nr || '&Zeitraum=' || zeitraum_int || '&Haushaltsjahr=' || substring('' || zeitraum_int from 1 for 4) where stichtagsart='Kostenrechnung' and katalog_id in ('KOSTEN_LEHRE_SEK_Q');\
\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&bis Hochschulsemester=1' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_1HS_KOEPFE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&bis Fachsemester=1' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_1FS_KOEPFE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&bis Fachsemester=1' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_1FS_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Fachkennz.=H' || '&bis Fachsemester=1' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_1FS_HF_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Fachkennz.=N' || '&bis Fachsemester=1' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_1FS_NF_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_KOEPFE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Fachkennz.=H' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_HF_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Fachkennz.=N' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_NF_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&in der RSZ=1' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_RSZ_KOEPFE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&in der RSZ=1' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_RSZ_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&in der RSZ=1' || '&Fachkennz.=H' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_RSZ_HF_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&in der RSZ=1' || '&Fachkennz.=N' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_RSZ_NF_FAELLE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Geschlecht=2' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_W_KOEPFE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Geschlecht=1' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_M_KOEPFE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_D_KOEPFE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Hochschulzugangsber.=6' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_BI_KOEPFE');\
update tmp_kennz set nextmask='18620&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Hochschulzugangsber.=7' where stichtagsart='Studierendenstatistik' and katalog_id in ('STUD_BA_KOEPFE');\
\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Fachkennz.=H' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_HF_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Fachkennz.=N' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_NF_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Geschlecht=2' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_W_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Geschlecht=1' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_M_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Geschlecht=2' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_W_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Geschlecht=1' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_M_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Geschlecht=2' || '&Fachkennz.=H' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_W_HF_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Geschlecht=1' || '&Fachkennz.=H' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_M_HF_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Geschlecht=2' || '&Fachkennz.=H' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_W_HF_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Geschlecht=1' || '&Fachkennz.=H' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_M_HF_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Geschlecht=2' || '&Fachkennz.=N' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_W_NF_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=f' || '&Geschlecht=1' || '&Fachkennz.=N' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_M_NF_FAELLE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Staatsangeh%F6rigkeit="000"' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_D_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Hochschulzugangsber.=6' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_BI_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Hochschulzugangsber.=7' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_BA_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&K%F6pfe%20oder%20F%E4lle%20?=k' || '&Staatsangeh%F6rigkeit=Alle%20ohne%20Deutschland' where stichtagsart='Prüfungsstatistik' and katalog_id in ('ABSOLV_A_KOEPFE');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&Promotion=1' where stichtagsart='Prüfungsstatistik' and katalog_id in ('PROMOTIONEN');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&Promotion=1' || '&Geschlecht=2' where stichtagsart='Prüfungsstatistik' and katalog_id in ('PROMOTIONEN_W');\
update tmp_kennz set nextmask='18640&Hochschule=' || hs_nr || '&Semester=' || zeitraum_int || '&Promotion=1' || '&Geschlecht=1' where stichtagsart='Prüfungsstatistik' and katalog_id in ('PROMOTIONEN_M');\
\
\
<@selectintotmp select="hs_nr,hochschule_str,stichtagsart,beschreibung,erlaeuterung,zeitraum_int,\
zeitraum_str,ebene, ord_nr,gruppe_1,gruppe_2, round(betrag,2) as betrag,einheit,nextmask,nexttable,'' as stichtagsart2" source="tmp_kennz" target="tmp_kennz4">\
order by gruppe_1,zeitraum_int,gruppe_2,ord_nr\
@selectintotmp> <@informixnolog/>;\
\
\
/* <#if <> = "0">\
update tmp_kennz4 set erlaeuterung = '';\
#if> */\
\
<@selectintotmp select="hs_nr,hochschule_str,stichtagsart,stichtagsart2,beschreibung,erlaeuterung,zeitraum_int,\
zeitraum_str,ebene, ord_nr,gruppe_1,gruppe_2, round(betrag,2) as betrag,einheit,nextmask,nexttable" source="tmp_kennz4" target="tmp_kennz2">\
order by ord_nr,zeitraum_int,gruppe_1,gruppe_2\
@selectintotmp> <@informixnolog/>;\
\
drop table tmp_kennz;\
drop table tmp_kennz3;\
drop table tmp_kennz4;\
drop table tmp_kennz_basis;\
drop table tmp_betrag1;\
drop table tmp_betrag2;\
\
select ebene,hochschule_str,stichtagsart,\
--stichtagsart2,\
trim(string_not_null(gruppe_1)) || trim(string_not_null(gruppe_2)) || ' ' || beschreibung,\
--erlaeuterung,\
zeitraum_str,\
round(betrag,2),\
--einheit,\
nextmask,nexttable from tmp_kennz2\
;^XIL List\
drop_and_delete movable_columns sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=1\
min_heading_height=35\
Column CID=0 heading_text="Ebene" center_heading explanation="@@@kenn_ebene_stud@@@" \
row_selectable col_selectable heading_platform readonly\
width=10 text_size=10\
Column CID=0 heading_text="Hochschule" center_heading explanation="@@@kenn_hochschule@@@" \
row_selectable col_selectable heading_platform readonly\
width=15 text_size=10\
Column CID=1 heading_text="Statistische\\nKennzahl" center_heading explanation="@@@kenn_stat_kennzahl@@@"\
row_selectable col_selectable heading_platform readonly\
width=15 text_size=100\
Column CID=2 heading_text="Beschreibung" center_heading explanation="@@@kenn_beschreibung@@@"\
row_selectable col_selectable heading_platform readonly\
width=50\
Column CID=3 heading_text="Zeitraum" center_heading explanation="@@@kenn_zeitraum@@@"\
row_selectable col_selectable heading_platform readonly\
width=20\
Column CID=3 heading_text="Wert" center_heading explanation="@@@kenn_wert@@@"\
row_selectable col_selectable heading_platform readonly\
width=20\
Column CID=3 heading_text="Details\\nMaske" center_heading explanation="Details für diese Kennzahl"\
row_selectable col_selectable heading_platform readonly\
width=15\
Column CID=3 heading_text="Details\\nTabelle" center_heading explanation="Details für diese Kennzahl"\
row_selectable col_selectable heading_platform readonly\
width=15\
@@@^ ^ ^Gesamtüberblick der stat. Kennzahlen nach Hochschule und Art der Kennzahl.^drop table tmp_kennz2;^^1^600^400^^1^<> select 'Achtung: Beim Kennzahlen-Bericht wird das Maskenfeld Stat. Kennzahl ignoriert, ggf. würden die Kennzahlen sonst nicht vollständig berechnet.' from xdummy where <>='KENN_BW' and (1=0 /* or <> != ''*/);^