Meikel Bisping
2 years ago
10 changed files with 860 additions and 19 deletions
@ -0,0 +1,227 @@ |
|||||||
|
--freemarker template |
||||||
|
-- Maskenfelder -Leere Zeilen ausblenden, leere SPalten ausblenden? |
||||||
|
<sqlvars> |
||||||
|
<sqlvar name="table_name">select table_name from xcube where maskeninfo_id=${Maskennummer}</sqlvar> |
||||||
|
<sqlvar name="aggrfunction">select aggrfunction from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar> |
||||||
|
<sqlvar name="aggrfunction_restriction">select nvl(restriction,''::char(1)) from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar> |
||||||
|
<sqlvar name="restriction" type="string"><![CDATA[<sximport>select restriction from xcube where maskeninfo_id=<<Maskennummer>></sximport>]]></sqlvar> |
||||||
|
<sqlvar name="coldef" type="hash"><![CDATA[select F.name,F.caption,F.foreignkey_tab,F.foreignkey_col, |
||||||
|
F.foreignkey_cap,nvl(F.foreignkey_cond,''::varchar(1)) as foreignkey_cond, |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction, |
||||||
|
C.sortfield,C.is_sicht |
||||||
|
from sx_fields F,xcube_dimconfig C where C.table_name=F.table_name and F.name=C.name |
||||||
|
and C.maskeninfo_id=${Maskennummer} |
||||||
|
and F.name=<<Ansicht in Ergebnisspalten>>]]> |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="nichtsicht_ergspalten" type='hashsequence'><![CDATA[ |
||||||
|
<#if coldef.is_sicht=0> |
||||||
|
select distinct ${coldef.foreignkey_col} as apnr,${coldef.foreignkey_cap} as name, |
||||||
|
1::smallint as detailgesamtsort,${coldef.sortfield} as tmp_sortfield |
||||||
|
from ${coldef.foreignkey_tab} where |
||||||
|
1=1 |
||||||
|
<#if coldef.foreignkey_cond!=''> and ${coldef.foreignkey_cond} </#if> |
||||||
|
--{coldef.specific_restriction} |
||||||
|
--ausblenden von Spalten, die gar nicht in konkretem Teilergebnis vorkommen |
||||||
|
<#if "<<Leere Spalten ausblenden>>"="'ja'"> |
||||||
|
and ${coldef.foreignkey_col}::varchar(255) in (select distinct ${coldef.name}::varchar(255) from ${table_name} where |
||||||
|
${restriction} |
||||||
|
) |
||||||
|
</#if> |
||||||
|
union |
||||||
|
select 'gesamt','Gesamt',2::smallint as detailgesamtsort,null as tmp_sortfield from xdummy |
||||||
|
order by detailgesamtsort,tmp_sortfield,name; |
||||||
|
<#else> |
||||||
|
select 'Sichtspalten aktiv' from xdummy; |
||||||
|
</#if> |
||||||
|
]]> |
||||||
|
</sqlvar> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<sqlvar name="rowdef" type="hash"><![CDATA[select F.name,F.caption,C.is_sicht,foreignkey_tab,foreignkey_col,foreignkey_cap, |
||||||
|
nvl(F.foreignkey_cond,''::varchar(1)) as foreignkey_cond, |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction, |
||||||
|
C.sortfield |
||||||
|
from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name |
||||||
|
and C.maskeninfo_id=${Maskennummer} and F.name=<<Ansicht in Ergebniszeilen>>]]> |
||||||
|
</sqlvar> |
||||||
|
--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant |
||||||
|
<sqlvar name="nichtsicht_ergzeilen" type='hashsequence'><![CDATA[ |
||||||
|
<#if rowdef.is_sicht=0> |
||||||
|
select 1::smallint as level, ${rowdef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt |
||||||
|
${rowdef.foreignkey_cap} as name,${rowdef.sortfield} as tmp_sortfield from ${rowdef.foreignkey_tab} |
||||||
|
where 1=1 |
||||||
|
<#if rowdef.foreignkey_cond!=''> and ${rowdef.foreignkey_cond} </#if> |
||||||
|
--{rowdef.specific_restriction} |
||||||
|
union |
||||||
|
select 2,'gesamt','Gesamt',null as ${rowdef.sortfield} from xdummy |
||||||
|
order by level,tmp_sortfield; |
||||||
|
<#else> |
||||||
|
select 'nicht relevant' from xdummy;</#if> |
||||||
|
]]> |
||||||
|
</sqlvar> |
||||||
|
|
||||||
|
<sqlvar name="zweiteRowDef" type="hash"><![CDATA[ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!=""> |
||||||
|
select F.name,F.caption,C.is_sicht,foreignkey_tab,foreignkey_col,foreignkey_cap, |
||||||
|
nvl(F.foreignkey_cond,''::varchar(1)) as foreignkey_cond, |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction, |
||||||
|
C.sortfield |
||||||
|
from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name |
||||||
|
and C.maskeninfo_id=${Maskennummer} and F.name=<<2.Ansicht in Zeilen>> |
||||||
|
<#else> |
||||||
|
select 'keine zweite RowDef' from xdummy; |
||||||
|
</#if> |
||||||
|
]]> |
||||||
|
</sqlvar> |
||||||
|
--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant |
||||||
|
<sqlvar name="zweiteRow_nichtsicht_ergzeilen" type='hashsequence'><![CDATA[ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!=""&&zweiteRowDef.is_sicht=0> |
||||||
|
select 1::smallint as level, ${zweiteRowDef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt |
||||||
|
${zweiteRowDef.foreignkey_cap} as name,${zweiteRowDef.sortfield} as tmp_sortfield from ${zweiteRowDef.foreignkey_tab} |
||||||
|
where 1=1 |
||||||
|
<#if zweiteRowDef.foreignkey_cond!=''> and ${zweiteRowDef.foreignkey_cond} </#if> |
||||||
|
--{zweiteRowDef.specific_restriction} |
||||||
|
union |
||||||
|
select 2,'gesamt','Gesamt',null as ${zweiteRowDef.sortfield} from xdummy |
||||||
|
order by level,tmp_sortfield; |
||||||
|
<#else> |
||||||
|
select 'nicht relevant' from xdummy;</#if> |
||||||
|
]]> |
||||||
|
</sqlvar> |
||||||
|
|
||||||
|
|
||||||
|
</sqlvars> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
create temp table tmp_rohdaten ( |
||||||
|
colattrib varchar(255), <@addcomment comment=coldef.caption/> |
||||||
|
rowattrib varchar(255), <@addcomment comment=rowdef.caption/> |
||||||
|
row2attrib varchar(255), |
||||||
|
value decimal(17,5)); |
||||||
|
insert into tmp_rohdaten (colattrib,rowattrib,<#if "<<2.Ansicht in Zeilen>>"!="">row2attrib, </#if> value) |
||||||
|
select ${coldef.name}::varchar(255), |
||||||
|
${rowdef.name}::varchar(255), |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">${zweiteRowDef.name}::varchar(255),</#if> |
||||||
|
${aggrfunction} |
||||||
|
from |
||||||
|
${table_name} |
||||||
|
where |
||||||
|
${restriction} |
||||||
|
<#if (aggrfunction_restriction?length>0)> and ${aggrfunction_restriction} </#if> |
||||||
|
group by 1,2 <#if "<<2.Ansicht in Zeilen>>"!="">,${zweiteRowDef.name}</#if> ; |
||||||
|
create index ix_tmp_roh1 on tmp_rohdaten (colattrib,rowattrib,row2attrib); |
||||||
|
|
||||||
|
<#if coldef.is_sicht>0> |
||||||
|
<#assign ergspalten=.vars[coldef.caption].elements/> |
||||||
|
<#else> |
||||||
|
<#assign ergspalten=nichtsicht_ergspalten/> |
||||||
|
</#if> |
||||||
|
create temp table tmp_erg ( |
||||||
|
ebene integer, |
||||||
|
col1 varchar(255), |
||||||
|
name varchar(255), |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">col2 varchar(255),</#if> |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
c${i} decimal(17,5) default 0, <@addcomment comment=spalte.name/> |
||||||
|
|
||||||
|
</#foreach> |
||||||
|
sortnr integer |
||||||
|
) <@informixnolog/>; |
||||||
|
|
||||||
|
create index ix_tmp_erg on tmp_erg (sortnr); |
||||||
|
|
||||||
|
<#if rowdef.is_sicht>0> |
||||||
|
<#assign zeilendef=.vars[rowdef.caption].elements/> --ermittelt des SichtObjekts anhand des Feldnames (aus felderinfo) |
||||||
|
<#else> |
||||||
|
<#assign zeilendef=nichtsicht_ergzeilen/> |
||||||
|
</#if> |
||||||
|
<#assign sortnr=0/> |
||||||
|
<#foreach zeile in zeilendef> |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!=""> |
||||||
|
<#foreach zeile2 in zweiteRow_nichtsicht_ergzeilen> |
||||||
|
<#assign sortnr=sortnr+1/> |
||||||
|
insert into tmp_erg (ebene,col1,name,col2,sortnr) |
||||||
|
values (${zeile.level},'${zeile.key}','${zeile.name}','${zeile2.name}',${sortnr}); |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
<@updateval i=i col=spalte row=zeile row2=zeile2 sortnr=sortnr/> |
||||||
|
</#foreach> |
||||||
|
</#foreach> |
||||||
|
<#else> |
||||||
|
<#assign sortnr=sortnr+1/> |
||||||
|
insert into tmp_erg (ebene,col1,name,sortnr) |
||||||
|
values (${zeile.level},'${zeile.key}','${zeile.name}',${sortnr}); |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
<@updateval i=i col=spalte row=zeile row2='' sortnr=sortnr/> |
||||||
|
</#foreach> |
||||||
|
</#if> |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
<#macro updateval i col row row2 sortnr> |
||||||
|
update tmp_erg T set c${i}= |
||||||
|
(select nvl(sum(value),0) from tmp_rohdaten R where 1=1 |
||||||
|
|
||||||
|
<#if coldef.is_sicht==1> |
||||||
|
and R.colattrib in ${col.subkeys} |
||||||
|
<#else> |
||||||
|
--TODO Sicht=2 |
||||||
|
<#if col.apnr!='gesamt'> |
||||||
|
and R.colattrib='${col.apnr}' |
||||||
|
</#if> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#if rowdef.is_sicht==1> |
||||||
|
and R.rowattrib in ${row.subkeys} |
||||||
|
<#elseif rowdef.is_sicht==2> |
||||||
|
and ( ${row.strukturStr?replace('$1',' R.rowattrib')} ) |
||||||
|
<#else> |
||||||
|
<#if row.key!='gesamt'> and R.rowattrib='${row.key}' </#if> |
||||||
|
</#if> |
||||||
|
<#if row2?is_hash> and R.row2attrib='${row2.key}' </#if> |
||||||
|
) where T.sortnr='${sortnr}' |
||||||
|
; |
||||||
|
</#macro> |
||||||
|
|
||||||
|
drop table tmp_rohdaten; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<#if "<<Leere Zeilen ausblenden>>"="'ja'"> |
||||||
|
delete from tmp_erg where |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
c${i}=0 <#if spalte_has_next> and </#if> |
||||||
|
</#foreach>; |
||||||
|
</#if> |
||||||
|
<#if "<<Ansicht in Ergebniszeilen>>"="'institution'"> |
||||||
|
update tmp_erg set name=replace(name,col1||' - ',''); |
||||||
|
update tmp_erg set col1=(select max(uniquename) from organigramm where col1=trim(key_apnr)) |
||||||
|
where substring(col1 from 1 for 1)='_'; |
||||||
|
--vorher war ggfs _3 zu O005030, auch O005030 in Namen ersetzen |
||||||
|
update tmp_erg set name=replace(name,col1||' - ',''); |
||||||
|
</#if> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
select |
||||||
|
<#if rowdef.is_sicht>0>ebene,col1,</#if> |
||||||
|
name, |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">col2,</#if> |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
c${i} <#if spalte_has_next>,</#if> |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
from tmp_erg order by sortnr; |
@ -0,0 +1,156 @@ |
|||||||
|
--freemarker template |
||||||
|
<sqlvars> |
||||||
|
<sqlvar name="table_name">select table_name from xcube where maskeninfo_id=${Maskennummer}</sqlvar> |
||||||
|
<sqlvar name="function">select function from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar> |
||||||
|
<sqlvar name="restriction" type="string"><![CDATA[<sximport>select restriction from xcube where maskeninfo_id=<<Maskennummer>></sximport>]]></sqlvar> |
||||||
|
<sqlvar name="coldef" type="hash"><![CDATA[select F.name,F.caption,F.foreignkey_tab,F.foreignkey_col, |
||||||
|
F.foreignkey_cap,nvl(F.foreignkey_cond,''::varchar(1)) as foreignkey_cond, |
||||||
|
nvl(C.specific_restriction,''::varchar(1)) as specific_restriction, |
||||||
|
C.sortfield |
||||||
|
from sx_fields F,xcube_dimconfig C where C.table_name=F.table_name and F.name=C.name |
||||||
|
and C.maskeninfo_id=${Maskennummer} |
||||||
|
and F.name=<<Ansicht in Ergebnisspalten>>]]> |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="ergspalten" type='hashsequence'><![CDATA[ |
||||||
|
select distinct ${coldef.foreignkey_col} as apnr,${coldef.foreignkey_cap} as name, |
||||||
|
1::smallint as detailgesamtsort,${coldef.sortfield} |
||||||
|
from ${coldef.foreignkey_tab} where |
||||||
|
1=1 |
||||||
|
<#if coldef.foreignkey_cond!=''> and ${coldef.foreignkey_cond} </#if> |
||||||
|
${coldef.specific_restriction} |
||||||
|
--ausblenden von Spalten, die gar nicht in konkretem Teilergebnis vorkommen |
||||||
|
--and ${coldef.foreignkey_col} in (select distinct ${coldef.name} from ${tablename} where |
||||||
|
--Hier allgemeine Einschränkungen |
||||||
|
--jahr=<<Jahr>> |
||||||
|
--) |
||||||
|
union |
||||||
|
select 'gesamt','Gesamt',2::smallint as detailgesamtsort,null as ${coldef.sortfield} from xdummy |
||||||
|
order by detailgesamtsort,${coldef.sortfield},name; |
||||||
|
]]> |
||||||
|
</sqlvar> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<sqlvar name="rowdef" type="hash"><![CDATA[select F.name,F.caption,C.is_sicht,foreignkey_tab,foreignkey_col,foreignkey_cap, |
||||||
|
nvl(F.foreignkey_cond,''::varchar(1)) as foreignkey_cond, |
||||||
|
nvl(C.specific_restriction,''::varchar(1)) as specific_restriction |
||||||
|
from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name |
||||||
|
and C.maskeninfo_id=${Maskennummer} and F.name=<<Ansicht in Ergebniszeilen>>]]> |
||||||
|
</sqlvar> |
||||||
|
--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant |
||||||
|
<sqlvar name="nichtsicht_ergzeilen" type='hashsequence'><![CDATA[ |
||||||
|
<#if rowdef.is_sicht=0> |
||||||
|
select 1::smallint as level, ${rowdef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt |
||||||
|
${rowdef.foreignkey_cap} as name from ${rowdef.foreignkey_tab} |
||||||
|
where 1=1 |
||||||
|
<#if rowdef.foreignkey_cond!=''> and ${rowdef.foreignkey_cond} </#if> |
||||||
|
${rowdef.specific_restriction} |
||||||
|
union |
||||||
|
select 2,'gesamt','Gesamt' from xdummy |
||||||
|
order by level,name; |
||||||
|
<#else> |
||||||
|
select 'nicht relevant' from xdummy;</#if> |
||||||
|
]]> |
||||||
|
</sqlvar> |
||||||
|
</sqlvars> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
create temp table tmp_rohdaten ( |
||||||
|
colattrib varchar(255), <@addcomment comment=coldef.caption/> |
||||||
|
rowattrib varchar(255), <@addcomment comment=rowdef.caption/> |
||||||
|
value decimal(17,5)); |
||||||
|
insert into tmp_rohdaten (colattrib,rowattrib,value) |
||||||
|
select ${coldef.name}::varchar(255), |
||||||
|
${rowdef.name}::varchar(255), ${function} |
||||||
|
from |
||||||
|
${table_name} |
||||||
|
where |
||||||
|
${restriction} |
||||||
|
group by 1,2; |
||||||
|
create index ix_tmp_roh1 on tmp_rohdaten (colattrib,rowattrib); |
||||||
|
|
||||||
|
create temp table tmp_erg ( |
||||||
|
ebene integer, |
||||||
|
col1 varchar(255), |
||||||
|
name varchar(255), |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
c${i} decimal(17,5) default 0, <@addcomment comment=spalte.name/> |
||||||
|
|
||||||
|
</#foreach> |
||||||
|
sortnr integer |
||||||
|
) <@informixnolog/>; |
||||||
|
<#assign sortnr=0/> |
||||||
|
|
||||||
|
|
||||||
|
<#if rowdef.is_sicht==1> |
||||||
|
<#assign zeilendef=.vars[rowdef.caption].elements/> --ermittel des SichtObjekts anhand des Feldnames (aus felderinfo) |
||||||
|
<#else> |
||||||
|
<#assign zeilendef=nichtsicht_ergzeilen/> |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#foreach zeile in zeilendef> |
||||||
|
<#assign sortnr=sortnr+1/> |
||||||
|
insert into tmp_erg (ebene,col1,name,sortnr) |
||||||
|
values (${zeile.level},'${zeile.key}','${zeile.name}',${sortnr}); |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
<@updateval i=i col=spalte row=zeile art='gesamt'/> |
||||||
|
|
||||||
|
</#foreach> |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
<#macro updateval i col row art> |
||||||
|
update tmp_erg T set c${i}= |
||||||
|
(select nvl(sum(value),0) from tmp_rohdaten R where 1=1 |
||||||
|
<#if col.apnr!='gesamt'> |
||||||
|
and R.colattrib='${col.apnr}' |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#if rowdef.is_sicht==1> |
||||||
|
and R.rowattrib in ${row.subkeys} |
||||||
|
<#else> |
||||||
|
<#if row.key!='gesamt'> and R.rowattrib='${row.key}' </#if> |
||||||
|
</#if> |
||||||
|
) where T.col1='${row.key}' |
||||||
|
; |
||||||
|
</#macro> |
||||||
|
|
||||||
|
drop table tmp_rohdaten; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--Leerzeilen entfernen |
||||||
|
delete from tmp_erg where |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
c${i}=0 <#if spalte_has_next> and </#if> |
||||||
|
</#foreach>; |
||||||
|
|
||||||
|
<#if "<<Ansicht in Ergebniszeilen>>"="'institution'"> |
||||||
|
update tmp_erg set name=replace(name,col1||' - ',''); |
||||||
|
update tmp_erg set col1=(select max(uniquename) from organigramm where col1=trim(key_apnr)) |
||||||
|
where substring(col1 from 1 for 1)='_'; |
||||||
|
--vorher war ggfs _3 zu O005030, auch O005030 in Namen ersetzen |
||||||
|
update tmp_erg set name=replace(name,col1||' - ',''); |
||||||
|
</#if> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
select |
||||||
|
<#if rowdef.is_sicht==1>ebene,col1,</#if> |
||||||
|
name, |
||||||
|
<#assign i=0/> |
||||||
|
<#foreach spalte in ergspalten> |
||||||
|
<#assign i=i+1/> |
||||||
|
c${i}::integer <#if spalte_has_next>,</#if> |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
from tmp_erg order by sortnr; |
@ -0,0 +1,44 @@ |
|||||||
|
999990060^Köpfe oder Fälle ?^0^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='Köpfe';^ |
||||||
|
999990061^Semester^3^0^0^140^80^3^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^ |
||||||
|
999990062^Stichtag^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende';^^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende' and appl_key='0';^ |
||||||
|
999990063^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;^^^ |
||||||
|
999990064^Status^14^350^-1^140^180^1^sql^30^0^1^<<SQL>> select apnr,eintrag from sos_status order by 2^^<<SQL>> select apnr,eintrag from sos_status where eintrag='Alle ohne Beurl.';^ |
||||||
|
999990065^Hörerstatus^33^0^0^140^170^1^sql^30^0^1^<<SQL>> select apnr, eintrag from hoererstatus order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from hoererstatus where eintrag='alle';^ |
||||||
|
999990066^Weitere Tabellen^123^0^0^140^140^10^char^30^0^999^<<SQL>> \ |
||||||
|
--freemarker template\ |
||||||
|
select name,string_not_null(caption) || ' - ' || name from sx_tables where name in (<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung")==-1>'dim_studiengang'<#else>'dim_studiengang_gew'</#if>,'ikfz_bland_sem','ikfz_bland_hm','ikfz_bland_hzb','dim_staat', 'dim_person_attribute_aggr', 'semester')\ |
||||||
|
<#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^^^ |
||||||
|
999990067^bis Fachsemester^35^350^-1^140^100^1^integer^30^0^0^^^^ |
||||||
|
999990069^Bis Semester^4^350^-1^140^80^1^integer^30^0^999^<<SQL>> select tid, eintrag from semester order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^ |
||||||
|
999990070^Filter Studierende^119^0^0^140^150^1^sql^20^0^1^<<SQL>> SELECT id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SOS_STUD_FILTER' order by 2;^^^ |
||||||
|
999990071^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^^^ |
||||||
|
999990072^Felder^125^0^0^150^190^10^char^30^0^999^<<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\ |
||||||
|
--Pseudonyme eingeschaltet:\ |
||||||
|
and (F.name != 'matrikel_nr' or 0=(select \ |
||||||
|
count(*) from konstanten where beschreibung='SOS_MTKNR_EXT'\ |
||||||
|
and apnr=1)) \ |
||||||
|
<#if <<tablestylesheet>>='tabelle_html_datenblatt.xsl'>\ |
||||||
|
and (F.table_name ='sos_stg_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;^^^ |
||||||
|
999990073^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;^^^ |
||||||
|
999990074^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^999^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^^<<SQL>> select 1,'Ja' from xdummy^ |
||||||
|
999990075^Ansicht in Ergebniszeilen^121^0^0^100^200^1^char^200^1^1^<<SQL>> select F.name,F.caption from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name and is_rowdim=1 and C.maskeninfo_id=${Maskennummer} order by 1^^<<SQL>> select F.name,F.caption from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name and is_rowdefault=1 and C.maskeninfo_id=${Maskennummer} order by 1^ |
||||||
|
999990076^Ansicht in Ergebnisspalten^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select F.name,F.caption from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name and is_coldim=1 and C.maskeninfo_id=${Maskennummer} order by 1^^<<SQL>> select F.name,F.caption from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name and is_coldefault=1 and C.maskeninfo_id=${Maskennummer} order by 1^ |
||||||
|
999990077^Zivilstatus^41^350^-1^140^180^1^sql^30^0^13^<<SQL>> select attributevalue from personattribute_value_list where personattributetype_id = (select personattributetype_id from personattributetype where attributevalue = 'Status');^^^ |
||||||
|
999990078^Jahrgang^42^350^-1^140^180^1^sql^30^0^13^<<SQL>> select attributevalue from personattribute_value_list where personattributetype_id = (select personattributetype_id from personattributetype where attributevalue = 'Jahrgang');^^^ |
||||||
|
999990079^Leere Zeilen ausblenden^130^350^-1^140^80^1^char^30^0^1^<<SQL>> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^ ^<<SQL>> select 'ja','ja' from xdummy^ |
||||||
|
999990080^Leere Spalten ausblenden^2020^0^0^100^100^1^char^30^0^1^<<SQL>> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^^<<SQL>> select 'ja','ja' from xdummy^ |
||||||
|
999990081^Abschluss^7^0^0^140^170^5^char^30^0^1^<<SQL>> select abint,dtxt from k_abint order by 2;^^^ |
||||||
|
999990082^Kennzahl^3000^350^-1^150^180^1^integer^200^1^1^<<SQL>> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} order by sortnr,name;^{InputCheck:matrikelnummern}^<<SQL>> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} and is_default=1^ |
||||||
|
999990083^2.Ansicht in Zeilen^125^0^0^100^100^1^char^50^0^1^<<SQL>> select F.name,F.caption from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name and is_secondrowdim=1 and C.maskeninfo_id=${Maskennummer} order by 1^^1^ |
@ -0,0 +1 @@ |
|||||||
|
999990060^7^ |
@ -0,0 +1,23 @@ |
|||||||
|
999990060^999990060^ |
||||||
|
999990060^999990061^ |
||||||
|
999990060^999990062^ |
||||||
|
999990060^999990063^ |
||||||
|
999990060^999990064^ |
||||||
|
999990060^999990065^ |
||||||
|
999990060^999990066^ |
||||||
|
999990060^999990067^ |
||||||
|
999990060^999990069^ |
||||||
|
999990060^999990070^ |
||||||
|
999990060^999990071^ |
||||||
|
999990060^999990072^ |
||||||
|
999990060^999990073^ |
||||||
|
999990060^999990074^ |
||||||
|
999990060^999990075^ |
||||||
|
999990060^999990076^ |
||||||
|
999990060^999990077^ |
||||||
|
999990060^999990078^ |
||||||
|
999990060^999990079^ |
||||||
|
999990060^999990080^ |
||||||
|
999990060^999990081^ |
||||||
|
999990060^999990082^ |
||||||
|
999990060^999990083^ |
@ -0,0 +1,266 @@ |
|||||||
|
999990060^xCube Studierende^--freemarker template\ |
||||||
|
-- Maskenfelder -Leere Zeilen ausblenden, leere SPalten ausblenden?\ |
||||||
|
<sqlvars>\ |
||||||
|
<sqlvar name="table_name">select table_name from xcube where maskeninfo_id=${Maskennummer}</sqlvar>\ |
||||||
|
<sqlvar name="aggrfunction">select aggrfunction from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar>\ |
||||||
|
<sqlvar name="aggrfunction_restriction">select nvl(restriction,''::char(1)) from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar>\ |
||||||
|
<sqlvar name="restriction" type="string"><![CDATA[<sximport>select restriction from xcube where maskeninfo_id=<<Maskennummer>></sximport>]]></sqlvar>\ |
||||||
|
<sqlvar name="coldef" type="hash"><![CDATA[select F.name,F.caption,F.foreignkey_tab,F.foreignkey_col,\ |
||||||
|
F.foreignkey_cap,nvl(F.foreignkey_cond,''::varchar(1)) as foreignkey_cond,\ |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\ |
||||||
|
C.sortfield,C.is_sicht\ |
||||||
|
from sx_fields F,xcube_dimconfig C where C.table_name=F.table_name and F.name=C.name \ |
||||||
|
and C.maskeninfo_id=${Maskennummer} \ |
||||||
|
and F.name=<<Ansicht in Ergebnisspalten>>]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
<sqlvar name="nichtsicht_ergspalten" type='hashsequence'><![CDATA[\ |
||||||
|
<#if coldef.is_sicht=0>\ |
||||||
|
select distinct ${coldef.foreignkey_col} as apnr,${coldef.foreignkey_cap} as name,\ |
||||||
|
1::smallint as detailgesamtsort,${coldef.sortfield} as tmp_sortfield\ |
||||||
|
from ${coldef.foreignkey_tab} where \ |
||||||
|
1=1 \ |
||||||
|
<#if coldef.foreignkey_cond!=''> and ${coldef.foreignkey_cond} </#if>\ |
||||||
|
--{coldef.specific_restriction} \ |
||||||
|
--ausblenden von Spalten, die gar nicht in konkretem Teilergebnis vorkommen\ |
||||||
|
<#if "<<Leere Spalten ausblenden>>"="'ja'">\ |
||||||
|
and ${coldef.foreignkey_col}::varchar(255) in (select distinct ${coldef.name}::varchar(255) from ${table_name} where \ |
||||||
|
${restriction} \ |
||||||
|
)\ |
||||||
|
</#if>\ |
||||||
|
union\ |
||||||
|
select 'gesamt','Gesamt',2::smallint as detailgesamtsort,null as tmp_sortfield from xdummy\ |
||||||
|
order by detailgesamtsort,tmp_sortfield,name;\ |
||||||
|
<#else>\ |
||||||
|
select 'Sichtspalten aktiv' from xdummy;\ |
||||||
|
</#if>\ |
||||||
|
]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<sqlvar name="rowdef" type="hash"><![CDATA[select F.name,F.caption,C.is_sicht,foreignkey_tab,foreignkey_col,foreignkey_cap,\ |
||||||
|
nvl(F.foreignkey_cond,''::varchar(1)) as foreignkey_cond,\ |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\ |
||||||
|
C.sortfield\ |
||||||
|
from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name \ |
||||||
|
and C.maskeninfo_id=${Maskennummer} and F.name=<<Ansicht in Ergebniszeilen>>]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant\ |
||||||
|
<sqlvar name="nichtsicht_ergzeilen" type='hashsequence'><![CDATA[\ |
||||||
|
<#if rowdef.is_sicht=0>\ |
||||||
|
select 1::smallint as level, ${rowdef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\ |
||||||
|
${rowdef.foreignkey_cap} as name,${rowdef.sortfield} as tmp_sortfield from ${rowdef.foreignkey_tab}\ |
||||||
|
where 1=1\ |
||||||
|
<#if rowdef.foreignkey_cond!=''> and ${rowdef.foreignkey_cond} </#if>\ |
||||||
|
--{rowdef.specific_restriction} \ |
||||||
|
union\ |
||||||
|
select 2,'gesamt','Gesamt',null as ${rowdef.sortfield} from xdummy\ |
||||||
|
order by level,tmp_sortfield; \ |
||||||
|
<#else>\ |
||||||
|
select 'nicht relevant' from xdummy;</#if>\ |
||||||
|
]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
\ |
||||||
|
<sqlvar name="zweiteRowDef" type="hash"><![CDATA[\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">\ |
||||||
|
select F.name,F.caption,C.is_sicht,foreignkey_tab,foreignkey_col,foreignkey_cap,\ |
||||||
|
nvl(F.foreignkey_cond,''::varchar(1)) as foreignkey_cond,\ |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\ |
||||||
|
C.sortfield\ |
||||||
|
from sx_fields F,xcube_dimconfig C where F.table_name=C.table_name and F.name=C.name \ |
||||||
|
and C.maskeninfo_id=${Maskennummer} and F.name=<<2.Ansicht in Zeilen>>\ |
||||||
|
<#else>\ |
||||||
|
select 'keine zweite RowDef' from xdummy;\ |
||||||
|
</#if>\ |
||||||
|
]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant\ |
||||||
|
<sqlvar name="zweiteRow_nichtsicht_ergzeilen" type='hashsequence'><![CDATA[\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!=""&&zweiteRowDef.is_sicht=0>\ |
||||||
|
select 1::smallint as level, ${zweiteRowDef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\ |
||||||
|
${zweiteRowDef.foreignkey_cap} as name,${zweiteRowDef.sortfield} as tmp_sortfield from ${zweiteRowDef.foreignkey_tab}\ |
||||||
|
where 1=1\ |
||||||
|
<#if zweiteRowDef.foreignkey_cond!=''> and ${zweiteRowDef.foreignkey_cond} </#if>\ |
||||||
|
--{zweiteRowDef.specific_restriction} \ |
||||||
|
union\ |
||||||
|
select 2,'gesamt','Gesamt',null as ${zweiteRowDef.sortfield} from xdummy\ |
||||||
|
order by level,tmp_sortfield; \ |
||||||
|
<#else>\ |
||||||
|
select 'nicht relevant' from xdummy;</#if>\ |
||||||
|
]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
</sqlvars>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
create temp table tmp_rohdaten (\ |
||||||
|
colattrib varchar(255), <@addcomment comment=coldef.caption/>\ |
||||||
|
rowattrib varchar(255), <@addcomment comment=rowdef.caption/>\ |
||||||
|
row2attrib varchar(255),\ |
||||||
|
value decimal(17,5));\ |
||||||
|
insert into tmp_rohdaten (colattrib,rowattrib,<#if "<<2.Ansicht in Zeilen>>"!="">row2attrib, </#if> value)\ |
||||||
|
select ${coldef.name}::varchar(255), \ |
||||||
|
${rowdef.name}::varchar(255),\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">${zweiteRowDef.name}::varchar(255),</#if>\ |
||||||
|
${aggrfunction}\ |
||||||
|
from \ |
||||||
|
${table_name}\ |
||||||
|
where \ |
||||||
|
${restriction}\ |
||||||
|
<#if (aggrfunction_restriction?length>0)> and ${aggrfunction_restriction} </#if>\ |
||||||
|
group by 1,2 <#if "<<2.Ansicht in Zeilen>>"!="">,${zweiteRowDef.name}</#if> ;\ |
||||||
|
create index ix_tmp_roh1 on tmp_rohdaten (colattrib,rowattrib,row2attrib);\ |
||||||
|
\ |
||||||
|
<#if coldef.is_sicht>0>\ |
||||||
|
<#assign ergspalten=.vars[coldef.caption].elements/>\ |
||||||
|
<#else>\ |
||||||
|
<#assign ergspalten=nichtsicht_ergspalten/>\ |
||||||
|
</#if>\ |
||||||
|
create temp table tmp_erg (\ |
||||||
|
ebene integer,\ |
||||||
|
col1 varchar(255),\ |
||||||
|
name varchar(255),\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">col2 varchar(255),</#if>\ |
||||||
|
<#assign i=0/>\ |
||||||
|
<#foreach spalte in ergspalten>\ |
||||||
|
<#assign i=i+1/>\ |
||||||
|
c${i} decimal(17,5) default 0, <@addcomment comment=spalte.name/>\ |
||||||
|
\ |
||||||
|
</#foreach>\ |
||||||
|
sortnr integer\ |
||||||
|
) <@informixnolog/>;\ |
||||||
|
\ |
||||||
|
create index ix_tmp_erg on tmp_erg (sortnr);\ |
||||||
|
\ |
||||||
|
<#if rowdef.is_sicht>0> \ |
||||||
|
<#assign zeilendef=.vars[rowdef.caption].elements/> --ermittelt des SichtObjekts anhand des Feldnames (aus felderinfo)\ |
||||||
|
<#else>\ |
||||||
|
<#assign zeilendef=nichtsicht_ergzeilen/>\ |
||||||
|
</#if>\ |
||||||
|
<#assign sortnr=0/>\ |
||||||
|
<#foreach zeile in zeilendef>\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">\ |
||||||
|
<#foreach zeile2 in zweiteRow_nichtsicht_ergzeilen>\ |
||||||
|
<#assign sortnr=sortnr+1/>\ |
||||||
|
insert into tmp_erg (ebene,col1,name,col2,sortnr)\ |
||||||
|
values (${zeile.level},'${zeile.key}','${zeile.name}','${zeile2.name}',${sortnr});\ |
||||||
|
<#assign i=0/>\ |
||||||
|
<#foreach spalte in ergspalten>\ |
||||||
|
<#assign i=i+1/>\ |
||||||
|
<@updateval i=i col=spalte row=zeile row2=zeile2 sortnr=sortnr/>\ |
||||||
|
</#foreach>\ |
||||||
|
</#foreach>\ |
||||||
|
<#else>\ |
||||||
|
<#assign sortnr=sortnr+1/>\ |
||||||
|
insert into tmp_erg (ebene,col1,name,sortnr)\ |
||||||
|
values (${zeile.level},'${zeile.key}','${zeile.name}',${sortnr});\ |
||||||
|
<#assign i=0/>\ |
||||||
|
<#foreach spalte in ergspalten>\ |
||||||
|
<#assign i=i+1/>\ |
||||||
|
<@updateval i=i col=spalte row=zeile row2='' sortnr=sortnr/>\ |
||||||
|
</#foreach>\ |
||||||
|
</#if> \ |
||||||
|
</#foreach>\ |
||||||
|
\ |
||||||
|
<#macro updateval i col row row2 sortnr>\ |
||||||
|
update tmp_erg T set c${i}=\ |
||||||
|
(select nvl(sum(value),0) from tmp_rohdaten R where 1=1 \ |
||||||
|
\ |
||||||
|
<#if coldef.is_sicht==1>\ |
||||||
|
and R.colattrib in ${col.subkeys}\ |
||||||
|
<#else>\ |
||||||
|
--TODO Sicht=2\ |
||||||
|
<#if col.apnr!='gesamt'>\ |
||||||
|
and R.colattrib='${col.apnr}' \ |
||||||
|
</#if>\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
<#if rowdef.is_sicht==1>\ |
||||||
|
and R.rowattrib in ${row.subkeys}\ |
||||||
|
<#elseif rowdef.is_sicht==2>\ |
||||||
|
and ( ${row.strukturStr?replace('$1',' R.rowattrib')} ) \ |
||||||
|
<#else>\ |
||||||
|
<#if row.key!='gesamt'> and R.rowattrib='${row.key}' </#if>\ |
||||||
|
</#if>\ |
||||||
|
<#if row2?is_hash> and R.row2attrib='${row2.key}' </#if> \ |
||||||
|
) where T.sortnr='${sortnr}'\ |
||||||
|
;\ |
||||||
|
</#macro>\ |
||||||
|
\ |
||||||
|
drop table tmp_rohdaten;\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#if "<<Leere Zeilen ausblenden>>"="'ja'">\ |
||||||
|
delete from tmp_erg where\ |
||||||
|
<#assign i=0/>\ |
||||||
|
<#foreach spalte in ergspalten>\ |
||||||
|
<#assign i=i+1/>\ |
||||||
|
c${i}=0 <#if spalte_has_next> and </#if>\ |
||||||
|
</#foreach>;\ |
||||||
|
</#if>\ |
||||||
|
<#if "<<Ansicht in Ergebniszeilen>>"="'institution'">\ |
||||||
|
update tmp_erg set name=replace(name,col1||' - ','');\ |
||||||
|
update tmp_erg set col1=(select max(uniquename) from organigramm where col1=trim(key_apnr))\ |
||||||
|
where substring(col1 from 1 for 1)='_';\ |
||||||
|
--vorher war ggfs _3 zu O005030, auch O005030 in Namen ersetzen\ |
||||||
|
update tmp_erg set name=replace(name,col1||' - ','');\ |
||||||
|
</#if> \ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
select \ |
||||||
|
<#if rowdef.is_sicht>0>ebene,col1,</#if>\ |
||||||
|
name,\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">col2,</#if>\ |
||||||
|
<#assign i=0/>\ |
||||||
|
<#foreach spalte in ergspalten>\ |
||||||
|
<#assign i=i+1/>\ |
||||||
|
c${i} <#if spalte_has_next>,</#if>\ |
||||||
|
</#foreach>\ |
||||||
|
\ |
||||||
|
from tmp_erg order by sortnr;^--freemarker Template\ |
||||||
|
XIL List\ |
||||||
|
sizable_columns horizontal_scrolling\ |
||||||
|
drop_and_delete movable_columns\ |
||||||
|
white_space_color=COLOR_WHITE fixed_columns=1\ |
||||||
|
min_heading_height=35\ |
||||||
|
XIL List\ |
||||||
|
sizable_columns horizontal_scrolling\ |
||||||
|
drop_and_delete movable_columns\ |
||||||
|
white_space_color=COLOR_WHITE fixed_columns=1\ |
||||||
|
min_heading_height=35\ |
||||||
|
<#if rowdef.is_sicht==1>\ |
||||||
|
Column CID=0 heading_text="Ebene" center_heading\ |
||||||
|
row_selectable heading_platform readonly\ |
||||||
|
width=10 text_size=8\ |
||||||
|
Column CID=20 heading_text="${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}Nr" center_heading\ |
||||||
|
row_selectable heading_platform readonly\ |
||||||
|
width=10 text_size=10\ |
||||||
|
</#if>\ |
||||||
|
Column CID=20 heading_text="${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}" center_heading\ |
||||||
|
row_selectable heading_platform readonly\ |
||||||
|
width=10 text_size=10\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!="">\ |
||||||
|
Column CID=20 heading_text="${.vars["2.Ansicht in ZeilenObject"].selectedItems[0].name}" center_heading\ |
||||||
|
row_selectable heading_platform readonly\ |
||||||
|
width=10 text_size=10\ |
||||||
|
</#if>\ |
||||||
|
<#if coldef.is_sicht>0>\ |
||||||
|
<#assign ergspalten=.vars[coldef.caption].elements/>\ |
||||||
|
<#else>\ |
||||||
|
<#assign ergspalten=nichtsicht_ergspalten/>\ |
||||||
|
</#if>\ |
||||||
|
<#foreach spalte in ergspalten>\ |
||||||
|
Column CID=1 heading_text="${spalte.name}" center_heading\ |
||||||
|
row_selectable heading_platform readonly\ |
||||||
|
width=12\ |
||||||
|
</#foreach>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
@@@^Altersgruppe^Anzahl^Flexible Ausgabe der Studierendenstatistik, Studiengänge und Lehreinheiten^drop table tmp_erg;^^3^700^360^0^1^^ |
@ -0,0 +1 @@ |
|||||||
|
16^999990060^ |
@ -0,0 +1,26 @@ |
|||||||
|
delete from xcube_dims where id in ('fssemzahl','hssemzahl'); |
||||||
|
INSERT INTO xcube_dims (id,apnr,name,sort1,parent,strukturstr) |
||||||
|
VALUES |
||||||
|
('fssemzahl','1','1.FS',1,NULL,NULL), |
||||||
|
('fssemzahl','2','2.FS',2,NULL,NULL), |
||||||
|
('fssemzahl','3','3.FS',3,NULL,NULL), |
||||||
|
('fssemzahl','4','4.FS',4,NULL,NULL), |
||||||
|
('fssemzahl','5','5.FS',5,NULL,NULL), |
||||||
|
('fssemzahl','6','6.FS',6,NULL,NULL), |
||||||
|
('fssemzahl','7','7.FS',7,NULL,NULL), |
||||||
|
('fssemzahl','8','8.FS',8,NULL,NULL), |
||||||
|
('fssemzahl','9','9.FS',9,NULL,NULL), |
||||||
|
('fssemzahl','10','10.FS',10,NULL,NULL); |
||||||
|
|
||||||
|
INSERT INTO xcube_dims (id,apnr,name,sort1,parent,strukturstr) |
||||||
|
VALUES |
||||||
|
('hssemzahl','1','1.HS',1,NULL,NULL), |
||||||
|
('hssemzahl','2','2.HS',2,NULL,NULL), |
||||||
|
('hssemzahl','3','3.HS',3,NULL,NULL), |
||||||
|
('hssemzahl','4','4.HS',4,NULL,NULL), |
||||||
|
('hssemzahl','10','10.HS',10,NULL,NULL), |
||||||
|
('hssemzahl','5','5.HS',5,NULL,NULL), |
||||||
|
('hssemzahl','6','6.HS',6,NULL,NULL), |
||||||
|
('hssemzahl','7','7.HS',7,NULL,NULL), |
||||||
|
('hssemzahl','8','8.HS',8,NULL,NULL), |
||||||
|
('hssemzahl','9','9.HS',9,NULL,NULL); |
@ -0,0 +1,66 @@ |
|||||||
|
--freemarker template |
||||||
|
|
||||||
|
<#assign xcubes = [ |
||||||
|
{"name":"Studierendenwürfel", "uniquename":"xcube_sos_stg_aggr","sachgebiet":16,"table_name":"sos_stg_aggr","maskeninfo_id":999990060, |
||||||
|
"restriction":"sem_rueck_beur_ein in (<<Semester>>)"} |
||||||
|
] /> |
||||||
|
|
||||||
|
<#assign xcube_kennzahl = [ |
||||||
|
{"xcube":"xcube_sos_stg_aggr", "maskeninfo_id":999990060,"apnr":"faelle","name":"Studierende (Fälle)","aggrfunction":"sum(summe)","restriction":"","is_default":1,"sortnr":1}, |
||||||
|
{"xcube":"xcube_sos_stg_aggr", "maskeninfo_id":999990060,"apnr":"koepfe","name":"Studierende (Köpfe)","aggrfunction":"sum(summe)","restriction":"studiengang_nr=1 and fach_nr=1" |
||||||
|
,"is_default":0,"sortnr":2} |
||||||
|
] /> |
||||||
|
|
||||||
|
|
||||||
|
<#assign xcube_dimconfig = [ |
||||||
|
{"xcube":"xcube_sos_stg_aggr","maskeninfo_id":999990060, "table_name":"sos_stg_aggr", "name":"fach_sem_zahl", |
||||||
|
"is_sicht":0,"is_rowdim":1,"is_secondrowdim":0,"is_rowdefault":1,"is_coldim":1, "is_secondcoldim":0,"is_coldefault":0,"sortfield":"sort1"}, |
||||||
|
{"xcube":"xcube_sos_stg_aggr","maskeninfo_id":999990060, "table_name":"sos_stg_aggr", "name":"hssem", |
||||||
|
"is_sicht":0,"is_rowdim":1,"is_secondrowdim":0,"is_rowdefault":0,"is_coldim":1, "is_secondcoldim":0,"is_coldefault":1,"sortfield":"sort1"}, |
||||||
|
{"xcube":"xcube_sos_stg_aggr","maskeninfo_id":999990060, "table_name":"sos_stg_aggr", "name":"geschlecht", |
||||||
|
"is_sicht":0,"is_rowdim":1,"is_secondrowdim":1, "is_rowdefault":0,"is_coldim":1, "is_secondcoldim":0,"is_coldefault":0,"sortfield":"apnr"} |
||||||
|
|
||||||
|
] /> |
||||||
|
|
||||||
|
<#assign sx_fields_entries = [ |
||||||
|
{"table_name":"sos_stg_aggr","name":"hssem","caption":"HS","foreignkey_tab":"xcube_dims","foreignkey_col":"apnr","foreignkey_cap":"name","foreignkey_cond":"id='hssemzahl'"}, |
||||||
|
{"table_name":"sos_stg_aggr","name":"fach_sem_zahl","caption":"FS","foreignkey_tab":"xcube_dims","foreignkey_col":"apnr","foreignkey_cap":"name","foreignkey_cond":"id='fssemzahl'"} |
||||||
|
] /> |
||||||
|
|
||||||
|
--freemarker magic |
||||||
|
|
||||||
|
<#foreach cube in xcubes> |
||||||
|
delete from xcube where maskeninfo_id=${cube.maskeninfo_id}; |
||||||
|
delete from xcube_dimconfig where maskeninfo_id=${cube.maskeninfo_id}; |
||||||
|
delete from xcube_kennzahl where maskeninfo_id=${cube.maskeninfo_id}; |
||||||
|
insert into xcube (name,uniquename,table_name,maskeninfo_id,sachgebiet,restriction) |
||||||
|
values ('${cube.name}','${cube.uniquename}','${cube.table_name}',${cube.maskeninfo_id},${cube.sachgebiet}, |
||||||
|
'${cube.restriction?replace("\x0027","\x0027\x0027")}'); |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
<#foreach k in xcube_kennzahl> |
||||||
|
insert into xcube_kennzahl (xcube,apnr,name,maskeninfo_id,aggrfunction,restriction,is_default,sortnr) values |
||||||
|
('${k.xcube}','${k.apnr}','${k.name}',${k.maskeninfo_id},'${k.aggrfunction?replace("\x0027","\x0027\x0027")}', |
||||||
|
'${k.restriction?replace("\x0027","\x0027\x0027")}', |
||||||
|
${k.is_default},${k.sortnr}); |
||||||
|
|
||||||
|
</#foreach> |
||||||
|
|
||||||
|
|
||||||
|
<#foreach conf in xcube_dimconfig> |
||||||
|
|
||||||
|
insert into xcube_dimconfig (xcube,maskeninfo_id,table_name,name,is_sicht,is_rowdim,is_secondrowdim,is_rowdefault,is_coldim,is_secondcoldim, is_coldefault,sortfield) |
||||||
|
values ('${conf.xcube}',${conf.maskeninfo_id},'${conf.table_name}','${conf.name}',${conf.is_sicht},${conf.is_rowdim},${conf.is_secondrowdim}, |
||||||
|
${conf.is_rowdefault},${conf.is_coldim},${conf.is_secondcoldim}, |
||||||
|
${conf.is_coldefault},'${conf.sortfield}'); |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
<#foreach sxf in sx_fields_entries> |
||||||
|
insert into sx_fields (table_name,name) select '${sxf.table_name}','${sxf.name}' from xdummy where |
||||||
|
(select count(*) from sx_fields where table_name='${sxf.table_name}' and name='${sxf.name}')=0; |
||||||
|
update sx_fields set caption='${sxf.caption?replace("\x0027","\x0027\x0027")}', |
||||||
|
foreignkey_tab='${sxf.foreignkey_tab}',foreignkey_col='${sxf.foreignkey_col}',foreignkey_cap='${sxf.foreignkey_cap}', |
||||||
|
foreignkey_cond='${sxf.foreignkey_cond?replace("\x0027","\x0027\x0027")}' -- einfache durch zwei einfache Zeichen ersetzten |
||||||
|
where table_name='${sxf.table_name}' |
||||||
|
and name='${sxf.name}'; |
||||||
|
</#foreach> |
Loading…
Reference in new issue