Meikel Bisping
2 years ago
12 changed files with 572 additions and 76 deletions
@ -0,0 +1,13 @@ |
|||||||
|
21500^Geldgeber^9^300^-1^100^100^1^char^30^0^12^<<SQL>>select tid,type,name,sortnr from sichten where art ='Geldgeber-Sicht (COB)' and aktiv=1 order by sortnr,type,name;^^ ^ |
||||||
|
21501^Kostenstelle^0^0^0^100^250^1^char^4^0^12^<<SQL>> select tid,type,name from sichten where art='Kostenstellen-Sicht' and aktiv=1 order by type,name^^^ |
||||||
|
21502^Haushaltsjahr^10^0^0^100^50^1^integer^30^0^1^<<SQL>> SELECT distinct ord,name FROM aggregierung where kategorie='COB-Jahr' order by 1;^^<<SQL>> SELECT ord,name FROM aggregierung where kategorie='COB-Jahr' and ord=year(today()) ;^ |
||||||
|
21503^Zeitraum^20^300^-1^100^100^1^sql^30^0^1^<<SQL>> select wert, name from aggregierung where kategorie = 'ZeitraumCob';^^^ |
||||||
|
21504^Kostenarten^1^0^0^100^250^1^char^30^0^12^<<SQL>> select tid,type,name from sichten where art='Kosten-/Erlösarten-Sicht' and aktiv=1 order by type,name^^^ |
||||||
|
21505^Monat von^30^0^0^100^100^1^integer^30^0^1^<<SQL>> select ord,name from aggregierung where kategorie = 'ZeitraumCob' and ord <=13 order by 1;^^^ |
||||||
|
21506^Monat bis^40^300^-1^100^100^1^integer^30^0^1^<<SQL>> select ord,name from aggregierung where kategorie = 'ZeitraumCob' and ord <=13 order by 1;^^^ |
||||||
|
21507^Ansicht in Ergebniszeilen^1000^0^0^100^200^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdim=1 order by 2^^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdefault=1^ |
||||||
|
21508^Ansicht in Ergebnisspalten^1020^0^0^100^150^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldim=1 order by 2^^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldefault=1^ |
||||||
|
21509^Leere Zeilen ausblenden^1010^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^ |
||||||
|
21510^Leere Spalten ausblenden^1030^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^ |
||||||
|
21511^Kennzahl^1050^350^-1^150^180^1^integer^200^1^1^<<SQL>> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} order by sortnr,name;^hidden^<<SQL>> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} and is_default=1^ |
||||||
|
21512^Kostenträger^5^0^0^100^250^1^char^30^0^12^<<SQL>> select tid,type,name from sichten where art='Kostenträger-Sicht' and aktiv=1 order by type,name^^^ |
@ -0,0 +1 @@ |
|||||||
|
21500^10^ |
@ -0,0 +1,13 @@ |
|||||||
|
21500^21500^ |
||||||
|
21500^21501^ |
||||||
|
21500^21502^ |
||||||
|
21500^21503^ |
||||||
|
21500^21504^ |
||||||
|
21500^21505^ |
||||||
|
21500^21506^ |
||||||
|
21500^21507^ |
||||||
|
21500^21508^ |
||||||
|
21500^21509^ |
||||||
|
21500^21510^ |
||||||
|
21500^21511^ |
||||||
|
21500^21512^ |
@ -0,0 +1,369 @@ |
|||||||
|
21500^Primärbuchungswürfel^--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="datatype">select nvl(datatype,'decimal(17,2)'::varchar(30)) from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar>\ |
||||||
|
--benoetigt falls Kennzahlen in Zeilen oder Splaten\ |
||||||
|
<sqlvar name="kennzahlen" type="hashsequence">select apnr,aggrfunction,nvl(restriction,''::char(1)) as restriction from xcube_kennzahl where maskeninfo_id=${Maskennummer}</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 name,caption,foreignkey_tab,foreignkey_col,\ |
||||||
|
foreignkey_cap,nvl(foreignkey_cond,''::varchar(1)) as foreignkey_cond,\ |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\ |
||||||
|
sortfield,is_sicht,calc_gesamt,is_virtual,vcsql,nvl(attrib_nachbearbeitung,''::char(1)) as attrib_nachbearbeitung\ |
||||||
|
from xcube_dimconfig where \ |
||||||
|
maskeninfo_id=${Maskennummer} \ |
||||||
|
and 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, geht derzeit nicht für virtuelle Spalten, -> Kernmodul\ |
||||||
|
<#if coldef.is_virtual?number=0&&"<<Leere Spalten ausblenden>>"="'ja'">\ |
||||||
|
and ${coldef.foreignkey_col}::varchar(255) in (select distinct ${coldef.name}::varchar(255) from ${table_name} where \ |
||||||
|
${restriction} \ |
||||||
|
)\ |
||||||
|
</#if>\ |
||||||
|
<#if coldef.calc_gesamt?number=1> \ |
||||||
|
union\ |
||||||
|
select 'gesamt','Gesamt',2::smallint as detailgesamtsort,null as tmp_sortfield from xdummy\ |
||||||
|
</#if>\ |
||||||
|
order by detailgesamtsort,tmp_sortfield,name;\ |
||||||
|
<#else>\ |
||||||
|
select 'Sichtspalten aktiv' from xdummy;\ |
||||||
|
</#if>\ |
||||||
|
]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<sqlvar name="rowdef" type="hash"><![CDATA[select name,caption,is_sicht,calc_gesamt,foreignkey_tab,foreignkey_col,foreignkey_cap,\ |
||||||
|
nvl(foreignkey_cond,''::varchar(1)) as foreignkey_cond,\ |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\ |
||||||
|
sortfield,is_virtual,vcsql,nvl(attrib_nachbearbeitung,''::char(1)) as attrib_nachbearbeitung\ |
||||||
|
from xcube_dimconfig C where maskeninfo_id=${Maskennummer} and 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} \ |
||||||
|
<#if rowdef.calc_gesamt?number=1>\ |
||||||
|
union\ |
||||||
|
select 2,'gesamt','Gesamt',null as ${rowdef.sortfield} from xdummy\ |
||||||
|
</#if>\ |
||||||
|
order by level,tmp_sortfield; \ |
||||||
|
<#else>\ |
||||||
|
select 'nicht relevant' from xdummy;</#if>\ |
||||||
|
]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
\ |
||||||
|
<sqlvar name="zweiteRowDef" type="hash"><![CDATA[\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">\ |
||||||
|
select name,caption,is_sicht,calc_gesamt,foreignkey_tab,foreignkey_col,foreignkey_cap,\ |
||||||
|
nvl(foreignkey_cond,''::varchar(1)) as foreignkey_cond,\ |
||||||
|
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\ |
||||||
|
C.sortfield\ |
||||||
|
from xcube_dimconfig where maskeninfo_id=${Maskennummer} and 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>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<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} \ |
||||||
|
<#if zweiteRowDef.calc_gesamt?number=1>\ |
||||||
|
union\ |
||||||
|
select 2,'gesamt','Gesamt',null as ${zweiteRowDef.sortfield} from xdummy\ |
||||||
|
</#if>\ |
||||||
|
order by level,tmp_sortfield; \ |
||||||
|
<#else>\ |
||||||
|
select 'nicht relevant' from xdummy;</#if>\ |
||||||
|
]]>\ |
||||||
|
</sqlvar>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
</sqlvars>\ |
||||||
|
\ |
||||||
|
<#function kennzahlInRowOrCol>\ |
||||||
|
--TODO auch 2. Dimension in Zeilen/Spalten\ |
||||||
|
<#if coldef.name="xckennzahl"||rowdef.name="xckennzahl"> <#return 1><#else> return <#return 0> </#if>\ |
||||||
|
</#function>\ |
||||||
|
\ |
||||||
|
<#function hasVirtualColumns>\ |
||||||
|
--TODO auch 2. Dimension in Zeilen/Spalten\ |
||||||
|
<#if coldef.is_virtual?number=1||rowdef.is_virtual?number=1> <#return 1><#else> return <#return 0> </#if>\ |
||||||
|
</#function>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#if hasVirtualColumns()=1||kennzahlInRowOrCol()=1>\ |
||||||
|
select * into temp tmp_rohdaten from \ |
||||||
|
${table_name}\ |
||||||
|
where \ |
||||||
|
${restriction};\ |
||||||
|
<#if coldef.is_virtual?number=1> alter table tmp_rohdaten add column ${coldef.name} varchar(255); ${coldef.vcsql}; </#if>\ |
||||||
|
<#if rowdef.is_virtual?number=1> alter table tmp_rohdaten add column ${rowdef.name} varchar(255); ${rowdef.vcsql}; </#if>\ |
||||||
|
--create index ix_tmp_r1 on tmp_rohdaten(${coldef.name},${rowdef.name}); --Todo nicht xckennzahl ggfs. für 2. Dimension in Spalten\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#if kennzahlInRowOrCol()=0>\ |
||||||
|
create temp table tmp_cache (\ |
||||||
|
colattrib varchar(255), <@addcomment comment=coldef.caption/>\ |
||||||
|
rowattrib varchar(255), <@addcomment comment=rowdef.caption/>\ |
||||||
|
row2attrib varchar(255),\ |
||||||
|
value decimal(17,5));\ |
||||||
|
insert into tmp_cache (colattrib,rowattrib,<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">row2attrib, </#if> value)\ |
||||||
|
select ${coldef.name}::varchar(255), \ |
||||||
|
${rowdef.name}::varchar(255),\ |
||||||
|
<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">${zweiteRowDef.name}::varchar(255),</#if>\ |
||||||
|
${aggrfunction}\ |
||||||
|
\ |
||||||
|
<#if hasVirtualColumns()=0> \ |
||||||
|
from ${table_name} where \ |
||||||
|
${restriction}\ |
||||||
|
<#if (aggrfunction_restriction?length>0)> and ${aggrfunction_restriction} </#if>\ |
||||||
|
<#else>\ |
||||||
|
from tmp_rohdaten\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
group by 1,2 <#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">,${zweiteRowDef.name}</#if> ;\ |
||||||
|
create index ix_tmp_roh1 on tmp_cache (colattrib,rowattrib,row2attrib);\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
--moegliche attrib_nachbearbeitung\ |
||||||
|
<#if kennzahlInRowOrCol()=0> \ |
||||||
|
<#assign tmp_table="tmp_cache"/> <#assign rowfield="rowattrib"/> <#assign colfield="rowattrib"/> \ |
||||||
|
<#else>\ |
||||||
|
<#assign tmp_table="tmp_rohdaten"/> <#assign rowfield=rowdef.name/> <#assign colfield=coldef.name/> \ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
<#if (rowdef.attrib_nachbearbeitung?length>1)>\ |
||||||
|
${rowdef.attrib_nachbearbeitung?replace("<<tmp_table>>",tmp_table)?replace("<<col>>",rowfield)};\ |
||||||
|
-- z.B. update tmp_cache R set rowattrib='s_'||rowattrib;\ |
||||||
|
</#if>\ |
||||||
|
<#if (coldef.attrib_nachbearbeitung?length>1)>\ |
||||||
|
${coldef.attrib_nachbearbeitung?replace("<<tmp_table>>",tmp_table)?replace("<<col>>",colfield)};\ |
||||||
|
-- z.B. update tmp_cache R set rowattrib='s_'||rowattrib;\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#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>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<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>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<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}=\ |
||||||
|
<#if kennzahlInRowOrCol()=0>\ |
||||||
|
(select nvl(sum(value),0) from tmp_cache R where 1=1 \ |
||||||
|
<@colrestriction col=col/>\ |
||||||
|
<@rowrestriction row=row row2=row2/>\ |
||||||
|
) \ |
||||||
|
<#else> -- Kennzahl ist in Zeile oder Spalte\ |
||||||
|
(select <@kennzahlSelect row=row col=col/>\ |
||||||
|
from tmp_rohdaten R where 1=1 \ |
||||||
|
<#if rowdef.name="xckennzahl"> <@kennzahlrestrict row=row col=col/> <#else> <@rowrestriction row=row row2=row2 rowattribname=rowdef.name/></#if>\ |
||||||
|
<#if coldef.name="xckennzahl"> <@kennzahlrestrict row=row col=col/> <#else> <@colrestriction col=col colattribname=coldef.name/></#if>\ |
||||||
|
\ |
||||||
|
)\ |
||||||
|
</#if>\ |
||||||
|
where T.sortnr='${sortnr}'\ |
||||||
|
;\ |
||||||
|
</#macro>\ |
||||||
|
\ |
||||||
|
<#macro kennzahlrestrict row col>\ |
||||||
|
<#if coldef.name="xckennzahl">\ |
||||||
|
<#foreach k in kennzahlen>\ |
||||||
|
<#if (col.apnr=k.apnr&&k.restriction?length>0)> and ${k.restriction} </#if>\ |
||||||
|
</#foreach>\ |
||||||
|
</#if>\ |
||||||
|
<#if rowdef.name="xckennzahl">\ |
||||||
|
<#foreach k in kennzahlen>\ |
||||||
|
<#if (row.key=k.apnr&&k.restriction?length>0)> and ${k.restriction} </#if>\ |
||||||
|
</#foreach>\ |
||||||
|
</#if>\ |
||||||
|
</#macro>\ |
||||||
|
\ |
||||||
|
<#macro kennzahlSelect row col>\ |
||||||
|
<#if coldef.name="xckennzahl">\ |
||||||
|
<#foreach k in kennzahlen>\ |
||||||
|
<#if col.apnr=k.apnr> ${k.aggrfunction} </#if>\ |
||||||
|
</#foreach>\ |
||||||
|
</#if>\ |
||||||
|
<#if rowdef.name="xckennzahl">\ |
||||||
|
<#foreach k in kennzahlen>\ |
||||||
|
<#if row.key=k.apnr> ${k.aggrfunction} </#if>\ |
||||||
|
</#foreach>\ |
||||||
|
</#if>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
</#macro>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
<#macro colrestriction col colattribname='R.colattrib'>\ |
||||||
|
<#if coldef.is_sicht==1>\ |
||||||
|
and ${colattribname}::varchar(255) in ${col.subkeys}\ |
||||||
|
<#else>\ |
||||||
|
--TODO Sicht=2\ |
||||||
|
<#if col.apnr!='gesamt'>\ |
||||||
|
and ${colattribname}::varchar(255)='${col.apnr}' \ |
||||||
|
</#if>\ |
||||||
|
</#if>\ |
||||||
|
</#macro>\ |
||||||
|
\ |
||||||
|
<#macro rowrestriction row row2 rowattribname='R.rowattrib' >\ |
||||||
|
<#if rowdef.is_sicht==1>\ |
||||||
|
and ${rowattribname}::varchar(255) in ${row.subkeys}\ |
||||||
|
<#elseif rowdef.is_sicht==2>\ |
||||||
|
and ( ${row.strukturStr?replace('$1',' '+rowattribname+"::varchar(255)")} ) \ |
||||||
|
<#else>\ |
||||||
|
<#if row.key!='gesamt'> and ${rowattribname}::varchar(255)='${row.key}' </#if>\ |
||||||
|
</#if>\ |
||||||
|
<#if row2?is_hash> and R.row2attrib='${row2.key}' </#if> \ |
||||||
|
</#macro>\ |
||||||
|
\ |
||||||
|
drop table if exists tmp_cache;\ |
||||||
|
\ |
||||||
|
drop table if exists tmp_rohdaten;\ |
||||||
|
\ |
||||||
|
-- Kennzahl in Spalten/Zeilen ggfs. null\ |
||||||
|
<#assign i=0/>\ |
||||||
|
<#foreach spalte in ergspalten>\ |
||||||
|
<#assign i=i+1/>\ |
||||||
|
update tmp_erg set c${i}=0 where c${i} is null; \ |
||||||
|
</#foreach>\ |
||||||
|
\ |
||||||
|
<#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>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">col2,</#if>\ |
||||||
|
<#assign i=0/>\ |
||||||
|
<#foreach spalte in ergspalten>\ |
||||||
|
<#assign i=i+1/>\ |
||||||
|
c${i}::${datatype} <#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>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<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>\ |
||||||
|
\ |
||||||
|
\ |
||||||
|
@@@^^^Dynamische Auswertungen von Primärbuchungen^drop table tmp_erg;^^2^600^400^0^1^^ |
@ -0,0 +1 @@ |
|||||||
|
27^21500^ |
@ -1,32 +1,64 @@ |
|||||||
delete from xcube_dims where id in ('fs4','fssemzahl','hssemzahl'); |
--Freemarker Template |
||||||
|
-- TableFieldExists wird genutzt, um zu prüfen, ob die entsprechende Tabelle existiert |
||||||
|
<#if TableFieldExists('aggregierung','ord')> |
||||||
|
delete from xcube_dims where id='jahr'; |
||||||
|
insert into xcube_dims (id, name,apnr,sort1) |
||||||
|
select distinct 'jahr',ord::char(6),ord::char(6),ord from aggregierung where kategorie like '%-Jahr%'; |
||||||
|
delete from xcube_dims where id='cob_jahr'; |
||||||
|
insert into xcube_dims (id, name,apnr,sort1) |
||||||
|
select distinct 'cob_jahr',ord::char(6),ord::char(6),ord from aggregierung where kategorie='COB-Jahr'; |
||||||
|
</#if> |
||||||
|
|
||||||
|
delete from xcube_dims where id='monat'; |
||||||
|
INSERT INTO xcube_dims (id,apnr,name,sort1) values |
||||||
|
('monat','1','Januar',1), |
||||||
|
('monat','2','Februar',2), |
||||||
|
('monat','3','März',3), |
||||||
|
('monat','4','April',4), |
||||||
|
('monat','5','Mai',5), |
||||||
|
('monat','6','Juni',6), |
||||||
|
('monat','7','Juli',7), |
||||||
|
('monat','8','August',8), |
||||||
|
('monat','9','September',9), |
||||||
|
('monat','10','Oktober',10), |
||||||
|
('monat','11','November',11), |
||||||
|
('monat','12','Dezember',12); |
||||||
|
|
||||||
|
-- priorität: semester, zul_semester, kenn_semester |
||||||
|
<#if TableFieldExists('semester','eintrag')> |
||||||
|
delete from xcube_dims where id='semester'; |
||||||
|
insert into xcube_dims (id, name,apnr,sort1) |
||||||
|
select 'semester',eintrag ,tid::varchar(50),tid from semester |
||||||
|
where tid in (select distinct sem_rueck_beur_ein from sos_stg_aggr); |
||||||
|
<#elseif TableFieldExists('zul_semester','eintrag')> |
||||||
|
delete from xcube_dims where id='semester'; |
||||||
|
insert into xcube_dims (id, apnr,sort1) |
||||||
|
select 'semester',eintrag ,tid::varchar(50),tid from zul_semester; |
||||||
|
<#elseif TableFieldExists('kenn_semester','eintrag')> |
||||||
|
delete from xcube_dims where id='semester'; |
||||||
|
insert into xcube_dims (id, apnr,sort1) |
||||||
|
select 'semester',druck ,tid::varchar(50),tid from kenn_semester; |
||||||
|
</#if> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<#if TableFieldExists('sos_stg_aggr','fach_sem_zahl')> |
||||||
|
delete from xcube_dims where id='fssemzahl'; |
||||||
|
INSERT INTO xcube_dims (id,apnr,name,sort1) |
||||||
|
select distinct 'fssemzahl',fach_sem_zahl::varchar(10),fach_sem_zahl||'.FS',fach_sem_zahl from sos_stg_aggr; |
||||||
|
</#if> |
||||||
|
|
||||||
|
<#if TableFieldExists('sos_stg_aggr','hssem')> |
||||||
|
delete from xcube_dims where id='fssemzahl'; |
||||||
|
INSERT INTO xcube_dims (id,apnr,name,sort1) |
||||||
|
select distinct 'hssemzahl',hssem::varchar(10),hssem||'.HS',hssem from sos_stg_aggr; |
||||||
|
</#if> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--Zum Testen |
--Zum Testen |
||||||
INSERT INTO xcube_dims (id,apnr,name,sort1,parent,strukturstr) |
--INSERT INTO xcube_dims (id,apnr,name,sort1,parent,strukturstr) |
||||||
VALUES |
--VALUES |
||||||
('fs4','0','FS<4',1,NULL,NULL), |
-- -('fs4','0','FS<4',1,NULL,NULL), |
||||||
('fs4','1','FS>=4',2,NULL,NULL); |
-- ('fs4','1','FS>=4',2,NULL,NULL); |
||||||
|
|
||||||
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); |
|
Loading…
Reference in new issue