44020^Studierende Datenblatt (Teiltabelle)^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
<#include "SQL_multitable_output"/>\
\
--ram excelexport\
\
\
>"?index_of("S.gewichtung_id=")==-1>select 'sos_stg_aggr' from xdummy<#else>select 'sos_stud_gewichtung' from xdummy#if>]]>\
\
<#assign restrict=DatenblattTables(<>,"<>",.vars["Weitere TabellenObject"].allKeys)/>;\
<#else>\
<#assign restrict=DatenblattTables(<>,"<>",.vars["Weitere TabellenObject"].allKeys)?replace('sos_stg_aggr',basetable)?replace("'dim_studiengang'","'dim_studiengang_gew'")/>;\
#if>\
select '${restrict?replace("\\x0027","\\x0027\\x0027")}' from xdummy;]]>\
\
> */ ${restriction})\
and foreignkey_tab in ('${basetable}'/* ,<> */ ${restriction})\
group by 1\
order by 1,2,3;\
]]>\
\
= <> */\
/* and tid <= <>*/\
;]]>\
\
> */ ${restriction}\
)\
and currentlyused=1\
--Pseudonyme eingeschaltet:\
and (name != 'matrikel_nr' or 0=(select \
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\
and apnr=1))\
<#if basetable='sos_stg_aggr'>\
${DatenblattFields(<>,"<>",FelderObject.allKeys)}\
<#else>\
${DatenblattFields(<>,"<>"?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."),\
FelderObject.allKeys?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."))}\
#if>\
and table_name !='dim_person_attribute_aggr'\
--hier Personattribute wg. Sortierung\
union\
SELECT F.name,\
P.attributevalue ,--caption,\
table_name,\
foreignkey_tab,\
foreignkey_col,\
foreignkey_cap,\
foreignkey_cond,\
foreignkey_func,\
case when foreignkey_uniquename!='' then foreignkey_uniquename else foreignkey_col end as foreignkey_uniquename\
\
from sx_fields F, personattributetype P\
where table_name in ('${basetable}' /* ,<> */ ${restriction}\
)\
and currentlyused=1\
--Pseudonyme eingeschaltet:\
and (name != 'matrikel_nr' or 0=(select \
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\
and apnr=1))\
<#if basetable='sos_stg_aggr'>\
${DatenblattFields(<>,"<>",FelderObject.allKeys)}\
<#else>\
${DatenblattFields(<>,"<>"?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."),\
FelderObject.allKeys?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."))}\
#if>\
and table_name ='dim_person_attribute_aggr'\
and F.name='attribute' || P.personattributetype_id\
\
order by 2,3;\
]]>\
\
\
\
<#assign lehr_stg_ab="lehr_stg_ab"/>\
<#if "<>"?index_of("S.gewichtung_id=")!=-1>\
<#assign lehr_stg_ab="lehr_stg_ab_gew"/>\
#if>\
\
delete from dim_person_attribute_aggr;\
\
<#foreach einSemester in semester>\
insert into dim_person_attribute_aggr \
select dim_person_attribute.matrikel_nr, \
max(attribute1),max(attribute2),max(attribute3),max(attribute4),max(attribute5),max(attribute6)\
,max(attribute7),max(attribute8),max(attribute9),max(attribute10), semester.tid\
from dim_person_attribute, semester\
where (${einSemester.key} between semester_von and semester_bis and semester.tid = ${einSemester.key}) \
\
group by dim_person_attribute.matrikel_nr, semester.tid;\
#foreach>\
\
\
--zum testen der sqlvars\
--select * from sx_fields\
-- <#if <>='tabelle_html.xsl'>\
-- /*,<> */\
-- <#else>\
-- , ${.vars["Weitere TabellenObject"].allKeys?replace("'","")}\
--#if>\
--where 1=1 \
-- <#if <>='tabelle_html.xsl'>\
-- /* and trim(table_name) || '.' || name in ( <> )*/\
-- <#else>\
-- and trim(table_name) || '.' || name in (${FelderObject.allKeys})\
-- #if>;\
\
--drop table if exists tmp_tabelle ;\
\
\
<#assign filter="\
/* and <> */\
/* and sem_rueck_beur_ein >= <> */\
/* and sem_rueck_beur_ein <= <> */\
/* and sem_rueck_beur_ein = <> */\
/* AND fach_sem_zahl <= <> */\
/* and "+basetable+".stichtag = <> */\
/* and kz_rueck_beur_ein in(<>) */\
/* and geschlecht=<> */\
/* and ${<>} */\
/* and substring('' || sem_rueck_beur_ein from 5 for 1)='<>' */\
" />\
\
\
<#if "<>"!="">\
<#assign filter=filter+" and " + basetable + ".matrikel_nr in (<>)"?replace("'","")/>\
#if>\
<#if "<>"?index_of("S.gewichtung_id=")!=-1>\
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]?replace('S.','sos_stud_gewichtung.')/>\
<#if "<>"?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 "<>"!="">\
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]/>\
#if>\
\
\
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> \
\
<#assign semester_von_filter="19000" />\
/* <#assign semester_von_filter="<>" /> */\
<#assign semester_bis_filter="30000" />\
/* <#assign semester_bis_filter="<>" /> */\
\
/*<#assign filter = filter + " and 0 < (select count(*) from personattribute PA, personattributetype TY\
where TY.personattributetype_id=PA.personattributetype_id\
and TY.attributevalue='Jahrgang'\
and PA.matrikel_nr="+basetable+".matrikel_nr\
and (${semester_von_filter} between PA.semester_von and PA.semester_bis\
or ${semester_bis_filter} between PA.semester_von and PA.semester_bis)\
and PA.attributevalue='<>') "/>*/\
\
/* <#assign filter = filter + " and 0 < (select count(*) from personattribute PA, personattributetype TY\
where TY.personattributetype_id=PA.personattributetype_id\
and TY.attributevalue='Status'\
and PA.matrikel_nr="+basetable+".matrikel_nr\
and (${semester_von_filter} between PA.semester_von and PA.semester_bis\
or ${semester_bis_filter} between PA.semester_von and PA.semester_bis)\
and PA.attributevalue='<>') "/>*/\
\
\
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<> */\
\
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in " + Abschluss.allNeededKeysList +")" /> --<> */\
\
\
-- /*<#assign filter = filter + " and dim_person_attribute.attribute9 = '<>'"/> */\
--/*<#assign jahrgang_filter = " and dim_person_attribute.attribute10 = '<>'"/>*/\
--<#assign filter = filter + jahrgang_filter />\
\
--first denormalize basetable:\
\
--get field_list_select\
<#assign field_list_select="''::char(250) as _meldung" />\
<#foreach feld in get_felder_fk>\
\
<#if feld.name="summe">\
<#assign field_list_select=field_list_select+", sum(summe) as "+basetable+"_summe" />\
<#else>\
<#assign field_list_select=field_list_select+", "+feld.table_name +"."+feld.name +" as "+feld.table_name +"_"+feld.name />\
#if>\
<#if feld.foreignkey_uniquename != "">\
<#assign field_list_select=field_list_select+",''::char(255) as " + feld.table_name +"_"+feld.name + "_uniquename" />\
<#assign field_list_select=field_list_select+",''::char(255) as " + feld.table_name +"_"+feld.name + "_str" />\
#if>\
#foreach>\
\
--get fromclause\
\
<#assign fromclause=lehr_stg_ab+" L,"+basetable />\
<#foreach join in get_joins>\
<#assign fromclause=fromclause+" left outer join "+join.foreignkey_tab +" on (" />\
<#if join.foreignkey_tab ="dim_person_attribute_aggr" >\
<#assign fromclause=fromclause+ basetable+".matrikel_nr=dim_person_attribute_aggr.matrikel_nr and dim_person_attribute_aggr.semester = "+basetable+".sem_rueck_beur_ein " />\
<#else>\
<#assign fromclause=fromclause+ basetable+"."+ join.name+"=" />\
<#if join.foreignkey_func != "">\
<#assign fromclause=fromclause+join.foreignkey_func+"(" />\
#if>\
<#assign fromclause=fromclause+join.foreignkey_tab+"." +join.foreignkey_col />\
<#if join.foreignkey_func != "">\
<#assign fromclause=fromclause+")" />\
#if>\
<#if join.foreignkey_cond != "">\
<#if join.foreignkey_cond[0..0] = "1" || \
join.foreignkey_cond[0..0] = "2" ||\
join.foreignkey_cond[0..0] = "3" ||\
join.foreignkey_cond[0..0] = "4" ||\
join.foreignkey_cond[0..0] = "5" ||\
join.foreignkey_cond[0..0] = "6" ||\
join.foreignkey_cond[0..0] = "7" ||\
join.foreignkey_cond[0..0] = "8" ||\
join.foreignkey_cond[0..0] = "9" ||\
join.foreignkey_cond[0..0] = "0" ||\
join.foreignkey_cond[0..0] = "'" >\
<#assign fromclause=fromclause+" and "+join.foreignkey_cond />\
<#else>\
<#assign fromclause=fromclause+" and tmp_tabelle."+join.table_name+"_"+join.foreignkey_cond />\
#if>\
#if>\
\
#if> --wenn nicht dim_person_attritubte_aggr\
<#assign fromclause=fromclause+") " />\
#foreach>\
<#if ("<>"+restriction)?index_of("dim_person_attribute_aggr") !=-1>\
<#assign fromclause=fromclause+" left outer join dim_person_attribute_aggr on ("+basetable+".matrikel_nr=dim_person_attribute_aggr.matrikel_nr and "+basetable+".sem_rueck_beur_ein=dim_person_attribute_aggr.semester)" />\
#if>\
\
--whereclause\
<#assign whereclause=" L.tid="+basetable+".tid_stg " />\
\
--get groupbyclause\
<#assign groupbyclause="group by 1" />\
<#foreach feld in get_felder_fk>\
<#if feld.name!="summe">\
<#assign groupbyclause=groupbyclause+", "+feld.table_name +"_"+feld.name />\
#if>\
#foreach>\
\
<@selectintotmp\
select=field_list_select\
source=fromclause\
target="tmp_tabelle">\
where ${whereclause}\
${filter}\
${groupbyclause}\
@selectintotmp>\
<@informixnolog/> ;\
\
create temp table tmp_rows(anz integer,max_anz integer) \
<@informixnolog/> \
;\
insert into tmp_rows(anz) select count(*) from tmp_tabelle;\
update tmp_rows set max_anz=(select apnr from konstanten where beschreibung='Datenblatt max.Zeilenzahl');\
\
delete from tmp_tabelle where 0 < (select count(*) from tmp_rows\
where anz > max_anz);\
\
select 'Warnung: die Abfrage kann nicht ausgeführt werden, denn ' || anz || ' Zeilen liegen über max. Grenze von ' || max_anz as _runtimeMessage\
from tmp_rows\
where anz > max_anz;\
\
drop table tmp_rows;\
\
--denormalize:\
\
\
<#foreach feld in get_felder_fk>\
<#if feld.foreignkey_tab != "" >\
<#if SQLdialect="Postgres">\
update tmp_tabelle set\
(${feld.table_name}_${feld.name}_uniquename, ${feld.table_name}_${feld.name}_str)=\
(select ${feld.foreignkey_uniquename},${feld.foreignkey_cap}\
from ${feld.foreignkey_tab}\
where tmp_tabelle.${feld.table_name}_${feld.name}=\
<#if feld.foreignkey_func != "">\
${feld.foreignkey_func}(\
#if>\
${feld.foreignkey_tab}.${feld.foreignkey_col}\
<#if feld.foreignkey_func != "">\
)\
#if>\
<#if feld.foreignkey_cond != "">\
<#if feld.foreignkey_cond[0..0] = "1" || \
feld.foreignkey_cond[0..0] = "2" ||\
feld.foreignkey_cond[0..0] = "3" ||\
feld.foreignkey_cond[0..0] = "4" ||\
feld.foreignkey_cond[0..0] = "5" ||\
feld.foreignkey_cond[0..0] = "6" ||\
feld.foreignkey_cond[0..0] = "7" ||\
feld.foreignkey_cond[0..0] = "8" ||\
feld.foreignkey_cond[0..0] = "9" ||\
feld.foreignkey_cond[0..0] = "0" ||\
feld.foreignkey_cond[0..0] = "'" >\
and ${feld.foreignkey_cond}\
<#else>\
and tmp_tabelle.${feld.table_name}_${feld.foreignkey_cond}\
#if>\
#if>\
);\
<#else> --Wenn Informix:\
\
update tmp_tabelle set (${feld.table_name}_${feld.name}_uniquename,${feld.table_name}_${feld.name}_str)\
=(( select ${feld.foreignkey_uniquename},${feld.foreignkey_cap}\
from ${feld.foreignkey_tab}\
where tmp_tabelle.${feld.table_name}_${feld.name}=\
<#if feld.foreignkey_func != "">\
${feld.foreignkey_func}(\
#if>\
${feld.foreignkey_tab}.${feld.foreignkey_col}\
<#if feld.foreignkey_func != "">\
)\
#if>\
<#if feld.foreignkey_cond != "">\
<#if feld.foreignkey_cond[0..0] = "1" || \
feld.foreignkey_cond[0..0] = "2" ||\
feld.foreignkey_cond[0..0] = "3" ||\
feld.foreignkey_cond[0..0] = "4" ||\
feld.foreignkey_cond[0..0] = "5" ||\
feld.foreignkey_cond[0..0] = "6" ||\
feld.foreignkey_cond[0..0] = "7" ||\
feld.foreignkey_cond[0..0] = "8" ||\
feld.foreignkey_cond[0..0] = "9" ||\
feld.foreignkey_cond[0..0] = "0" ||\
feld.foreignkey_cond[0..0] = "'" >\
and ${feld.foreignkey_cond}\
<#else>\
and tmp_tabelle.${feld.table_name}_${feld.foreignkey_cond}\
#if>\
#if>\
))\
where tmp_tabelle.${feld.table_name}_${feld.name} is not null\
;\
\
#if> --Wenn Postgres/Informix\
#if> --wenn foreign_key\
#foreach>\
\
\
<#if get_felder_fk?has_content >\
select \
\
<#assign rownum=1 />\
<#foreach feld in get_felder_fk>\
<#if feld.foreignkey_tab != "">\
\
${feld.table_name}_${feld.name}_str\
<#if <>=1>\
<#if feld.foreignkey_col=feld.foreignkey_uniquename>\
,${feld.table_name}_${feld.name}\
<#else>\
,${feld.table_name}_${feld.name}_uniquename\
#if>\
#if>\
\
<#else>\
${feld.table_name}_${feld.name}\
#if>\
<#if rownum < get_felder_fk?size>\
,\
#if>\
<#assign rownum= rownum+1 />\
#foreach>\
from tmp_tabelle\
order by 2\
;\
#if>^--Freemarker Template \
\
>"?index_of("S.gewichtung_id=")==-1>select 'sos_stg_aggr' from xdummy<#else>select 'sos_stud_gewichtung' from xdummy#if>]]>\
\
<#assign restrict=DatenblattTables(<>,"<>",.vars["Weitere TabellenObject"].allKeys)/>;\
<#else>\
<#assign restrict=DatenblattTables(<>,"<>",.vars["Weitere TabellenObject"].allKeys)?replace('sos_stg_aggr',basetable)?replace("'dim_studiengang'","'dim_studiengang_gew'")/>;\
#if>\
select '${restrict?replace("\\x0027","\\x0027\\x0027")}' from xdummy;]]>\
\
\
${DatenblattFields(<>,"<>",FelderObject.allKeys)}\
<#else>\
${DatenblattFields(<>,"<>"?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."),\
FelderObject.allKeys?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."))}\
#if>\
and table_name !='dim_person_attribute_aggr'\
--hier personattribute:\
union SELECT P.attributevalue , -- F.caption,\
F.foreignkey_tab,\
F.description as strukturStr\
from sx_fields F, personattributetype P\
where F.table_name in ('${basetable}'\
${restriction}\
)\
and currentlyused=1\
--Pseudonyme eingeschaltet:\
and (name != 'matrikel_nr' or 0=(select \
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\
and apnr=1))\
<#if basetable='sos_stg_aggr'>\
${DatenblattFields(<>,"<>",FelderObject.allKeys)}\
<#else>\
${DatenblattFields(<>,"<>"?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew.")\
,FelderObject.allKeys?replace("sos_stg_aggr","sos_stud_gewichtung")?replace("dim_studiengang.","dim_studiengang_gew."))}\
#if>\
and table_name ='dim_person_attribute_aggr'\
and F.name='attribute' || P.personattributetype_id\
order by 1;]]>\
\
\
XIL List\
sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=0\
min_heading_height=35\
<#assign i=1 />\
<#if get_felder?has_content >\
<#foreach myfield in get_felder>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.key}" explanation="${myfield.strukturStr}" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
<#if myfield.name != '' && <>==1>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.key}\\n(Schlüssel)" explanation="Schlüssel des Feldes ${myfield.key}" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
#if>\
#foreach>\
#if>\
@@@^Altersgruppe^Anzahl^Flexible Ausgabe der Studierendenstatistik, Studiengänge und Lehreinheiten^select cleanup_stmt from maskeninfo where tid=160440^^3^700^360^0^1^ ^