32560^ZSL-Mittelverteilung (Einzeltabelle)^--(c) 2023 Jutta Otten jutta.otten@verwaltung.uni-stuttgart.de & D.Quathamer\ --Freemarker Template\ <#include "SQL_lingua_franca"/>\ <#include "SuperX_general"/>\ \ = <> */\ /* and ord <= <> */\ order by 1\ ;\ ]]>\ \ \ and traegerschaft='ST'\ order by 2\ ;\ ]]>\ \ \ \ \ \ \ <#assign fact_table="kenn_stg_aggr_astat" />\ <#assign fact_filter="1=1" />\ <#assign semesterfeld="sem_rueck_beur_ein" />\ <#assign aggrfunction="sum(summe)" />\ <#assign aggrcoltype="integer" />\ \ <#if "<>"=="1">\ <#assign aggrcoltype="float" />\ <#assign aggrfunction="sum(summe::"+aggrcoltype+"*faktor)" />\ \ \ <#if "<>" == "stud_hs1" >\ <#assign jahrfeld="akad_jahr_anf" />\ <#assign semesterfilter="substring('' || S.tid from 5 for 1) in ('1','2')" />\ <#assign fact_filter=fact_filter + " and kz_rueck_beur_ein < 4" /> -- ohne exmatr., ohne beurlaubten\ <#assign fact_filter=fact_filter + " and studiengang_nr = 1 and fach_nr = 1" /> -- Kopf mit 1. Studiengang, 1. Fach\ <#assign fact_filter=fact_filter + " and hssem = 1" /> -- 1. HS-Sem.\ <#elseif "<>" == "stud_rsz2" >\ <#assign jahrfeld="val(substring('' || S.tid from 1 for 4))" />\ <#assign semesterfilter="substring('' || S.tid from 5 for 1)='2'" />\ <#assign fact_filter=fact_filter + " and kz_rueck_beur_ein < 4" /> -- ohne exmatr., ohne beurlaubten\ <#assign fact_filter=fact_filter + " and studiengang_nr = 1 and fach_nr = 1" /> -- Kopf mit 1. Studiengang, 1. Fach\ <#assign fact_filter=fact_filter + " and coalesce(fach_sem_zahl,0) < regel+3" /> -- in RSZ +2\ <#elseif "<>" == "absolv" >\ <#assign fact_table="kenn_lab_aggr_astat" />\ <#assign jahrfeld="akad_jahr_absolv" />\ <#assign semesterfeld="sem_der_pruefung" />\ <#assign semesterfilter="substring('' || S.tid from 5 for 1) in ('1','2')" />\ <#assign fact_filter=fact_filter + " and studiengang_nr = 1 and fach_nr = 1" /> -- Kopf mit 1. Studiengang, 1. Fach?\ <#assign fact_filter=fact_filter + " and pruefung_ergebnis <> 2" /> -- nur erfolgreiche Prüfungen\ \ \ \ \ \ <#assign staat_filter="1=1" />\ <#if "<>"="I">\ <#assign staat_filter="ca12_staat=0" />\ <#elseif "<>"="A">\ <#assign staat_filter="ca12_staat!=0" />\ <#elseif "<>"="EU">\ <#assign staat_filter="ca12_staat !=0 and 0 <(select count(*) from sos_staat_eu E where val(E.astat)=ca12_staat and "+semesterfeld+" between E.semester_von and E.semester_bis and EU='J') " />\ <#elseif "<>"="NEU">\ <#assign staat_filter="0 <(select count(*) from sos_staat_eu E where val(E.astat)=ca12_staat and "+semesterfeld+" between E.semester_von and E.semester_bis and EU='N') " />\ \ \ <#assign fieldclause=jahrfeld+" as jahr,hs_nr,hzbart_astat,ca12_staat,fgr,abgrp,"+aggrfunction + " as summe" />\ <#assign fromclause="kenn_semester S, "+fact_table +" inner join kenn_zsl_ausgleich_kennungen Z on (concat (left(stufrm,1),abschluss)=Z.astat and kennung_<>=1) " />\ \ <#assign whereclause="S.tid="+semesterfeld+" and " + semesterfilter+" and "+ fact_filter />\ <#assign whereclause=whereclause+ " and " + jahrfeld+ " >= <>" />\ <#assign whereclause=whereclause+ " and " + jahrfeld+ " <= <>" />\ \ --Default: Schleife über Hochschule\ <#assign rowdim=<> />\ <#assign rowfieldname="<>" />\ <#assign coldim=<> />\ <#assign colfieldname="<>" />\ \ <#if rowfieldname!=colfieldname >\ \ --start Datentabelle\ <@selectintotmp \ select=fieldclause\ source=fromclause\ target="tmp_tabelle">\ -- nested in selectinto muss die where Bedingung u. ggfs. group by etc kommen\ where hs_nr::char(10) in <@printkeys .vars["Hochschule"].allNeededKeys />\ and ${whereclause}\ /* and abschluss in (<>) */\ /* and hzbart=<> */\ /* and geschlecht = <> */\ and ${staat_filter}\ group by 1,2,3,4,5,6\ \ <@informixnolog/>;\ \ \ <#assign sortnr=1 />\ --Zuerst Summe:\ select 1::smallint as ebene ,\ ${sortnr}::integer as sortnr,\ 'Summe'::varchar(255) as levelname,\ <#if coldim?has_content>\ <#foreach col in coldim>\ (case when ${colfieldname}='${col.key}' then sum(summe) else 0 end)::${aggrcoltype} as spalte${col.key},\ \ \ (case when hzbart_astat in ('39','67','17','47','59','79','76','31','51','96','94','95') \ and ca12_staat <> 0 then sum(summe) else 0 end)::${aggrcoltype} as summe_ba,\ (sum(summe))::${aggrcoltype} as summe\ into temp tmp_tabelle2\ FROM tmp_tabelle\ group by 1,2,3,${colfieldname},hzbart_astat,ca12_staat\ ;\ \ --dann Levels:\ <#if rowdim?has_content>\ <#foreach row in rowdim>\ <#assign sortnr=sortnr+1 />\ insert into tmp_tabelle2\ select 2::smallint as ebene,\ ${sortnr},\ '${row.name}' as levelname,\ <#if coldim?has_content>\ <#foreach col in coldim>\ (case when ${colfieldname}='${col.key}' then sum(summe) else 0 end)::${aggrcoltype} as spalte${col.key},\ \ \ (case when hzbart_astat in ('39','67','17','47','59','79','76','31','51','96','94','95') \ and ca12_staat <> 0 then sum(summe) else 0 end)::${aggrcoltype} as summe_ba,\ sum(summe)\ FROM tmp_tabelle\ where ${rowfieldname}='${row.key}'\ group by 1,2,3,${colfieldname},hzbart_astat,ca12_staat\ ;\ \ \ \ --Aufsummieren:\ select ebene ,\ sortnr,\ levelname,\ <#if coldim?has_content>\ <#foreach col in coldim>\ sum(spalte${col.key})::${aggrcoltype} as spalte${col.key},\ \ \ sum(summe_ba)::${aggrcoltype} as summe_ba,\ sum(summe)::${aggrcoltype} as summe\ into temp tmp_tabelle3\ FROM tmp_tabelle2\ group by 1,2,3\ ;\ \ drop table tmp_tabelle;\ drop table tmp_tabelle2;\ \ select ebene,\ levelname,\ <#if coldim?has_content>\ <#foreach col in coldim>\ spalte${col.key},\ \ \ summe,\ summe_ba\ FROM tmp_tabelle3\ ORDER BY sortnr,1,2,3;\ <#else>\ --Zeilen und Spalten gleich:\ select null::integer into temp tmp_tabelle3\ from xdummy;\ select * from tmp_tabelle3;\ ^--Freemarker Template\ \ = <> */\ /* and ord <= <> */\ order by 1\ ;\ ]]>\ \ \ and traegerschaft='ST'\ order by 2\ ;\ ]]>\ \ \ \ \ \ \ <#assign coldim=<> />\ <#assign colfieldname="<>" />\ 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=2 heading_text=" Ebene " center_heading\ row_selectable col_selectable heading_platform readonly\ width=5 text_size=30\ Column CID=2 heading_text=" Name " center_heading\ row_selectable col_selectable heading_platform readonly\ width=30 text_size=30\ <#if coldim?has_content>\ <#foreach col in coldim>\ Column CID=3 heading_text=" ${col.dimcaption}\\000${col.name}" center_heading\ row_selectable col_selectable heading_platform readonly\ width=10 text_size=30\ \ \ Column CID=3 heading_text="Gesamt" center_heading\ row_selectable col_selectable heading_platform readonly\ width=10 text_size=30\ Column CID=3 heading_text="Darunter\\n\ Bildungsausl." center_heading row_selectable col_selectable heading_platform readonly\ width=10 text_size=30\ @@@^Studienfach^Anzahl bzw. Anteil^Studierende oder Absolvent_innen nach Hochschule, Fächergruppe, Gewichtung^drop table tmp_tabelle3;^studallg.dat^1^850^600^0^1^<> select 'Bitte wählen Sie unterschiedliche Spalten/Zeilen' from xdummy where '<>'='<>' union \ select 'Gewichtung mit folgenden Faktoren: Abschlüsse grundständiger Studiengänge ohne Staasexamen * 1 + Abschlüsse konsekutiver Master-Studiengänge * 0,5 + Abschlüsse Staatsexamen (inkl. Lehramt) * 1,5' from xdummy where '<>'='1'^