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]]>\ \ <#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'")/>;\ \ 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."))}\ \ 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."))}\ \ 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"/>\ \ \ 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;\ \ \ \ --zum testen der sqlvars\ --select * from sx_fields\ -- <#if <>='tabelle_html.xsl'>\ -- /*,<> */\ -- <#else>\ -- , ${.vars["Weitere TabellenObject"].allKeys?replace("'","")}\ --\ --where 1=1 \ -- <#if <>='tabelle_html.xsl'>\ -- /* and trim(table_name) || '.' || name in ( <> )*/\ -- <#else>\ -- and trim(table_name) || '.' || name in (${FelderObject.allKeys})\ -- ;\ \ --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 "<>"?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")+")"/>\ \ <#elseif "<>"!="">\ <#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]/>\ \ \ \ <#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 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" />\ \ \ \ --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+"(" />\ \ <#assign fromclause=fromclause+join.foreignkey_tab+"." +join.foreignkey_col />\ <#if join.foreignkey_func != "">\ <#assign fromclause=fromclause+")" />\ \ <#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 />\ \ \ \ --wenn nicht dim_person_attritubte_aggr\ <#assign fromclause=fromclause+") " />\ \ <#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)" />\ \ \ --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 />\ \ \ \ <@selectintotmp\ select=field_list_select\ source=fromclause\ target="tmp_tabelle">\ where ${whereclause}\ ${filter}\ ${groupbyclause}\ \ <@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}(\ \ ${feld.foreignkey_tab}.${feld.foreignkey_col}\ <#if feld.foreignkey_func != "">\ )\ \ <#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}\ \ \ );\ <#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}(\ \ ${feld.foreignkey_tab}.${feld.foreignkey_col}\ <#if feld.foreignkey_func != "">\ )\ \ <#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}\ \ \ ))\ where tmp_tabelle.${feld.table_name}_${feld.name} is not null\ ;\ \ --Wenn Postgres/Informix\ --wenn foreign_key\ \ \ \ <#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\ \ \ \ <#else>\ ${feld.table_name}_${feld.name}\ \ <#if rownum < get_felder_fk?size>\ ,\ \ <#assign rownum= rownum+1 />\ \ from tmp_tabelle\ order by 2\ ;\ ^--Freemarker Template \ \ >"?index_of("S.gewichtung_id=")==-1>select 'sos_stg_aggr' from xdummy<#else>select 'sos_stud_gewichtung' from xdummy]]>\ \ <#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'")/>;\ \ 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."))}\ \ 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."))}\ \ 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\ \ \ \ @@@^Altersgruppe^Anzahl^Flexible Ausgabe der Studierendenstatistik, Studiengänge und Lehreinheiten^select cleanup_stmt from maskeninfo where tid=160440^^3^700^360^0^1^ ^