Modul SuperX-Connect
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
6.1 KiB

47110^Stammdaten NRW (Zeitreihe)^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
\
\
\
<sqlvars>\
<sqlvar name="jahre" type="hashsequence"><![CDATA[\
SELECT distinct ord as jahr_int,name as jahr_str FROM aggregierung \
where kategorie='KENN-Jahr'\
and ord>=<<Start-Jahr>>\
and ord<=<<End-Jahr>>\
order by 1;\
]]>\
</sqlvar>\
</sqlvars>\
\
\
drop table if exists tmp_rpta_sxc_zahl_wert;\
drop table if exists tmp_stud;\
drop table if exists tmp_stud2;\
drop table if exists tmp_gesamt;\
\
create temp table tmp_rpta_sxc_zahl_wert as\
select \
sxc_katalog.tid as sxc_katalog_tid,\
sxc_katalog.id as sxc_katalog_id,\
sxc_katalog.name as sxc_katalog_name,\
sxc_katalog.beschreibung as sxc_katalog_beschreibung,\
sxc_zahl_wert.tid as tid,\
sxc_zahl_wert.hs_nr as hs_nr,\
sxc_zahl_wert.katalog_id as katalog_id,\
sxc_zahl_wert.jahr as jahr,\
sxc_zahl_wert.sem as sem,\
sxc_zahl_wert.ch110_institut as ch110_institut,\
sxc_zahl_wert.bland as bland,\
sxc_zahl_wert.bestand_id as bestand_id,\
sxc_zahl_wert.wert as wert,\
sxc_zahl_wert.generic_dim1 as generic_dim1,\
sxc_zahl_wert.generic_dim2 as generic_dim2,\
null::varchar as dummy \
from \
sxc_zahl_wert\
left outer join sxc_katalog on (sxc_katalog.id=sxc_zahl_wert.katalog_id) \
where 1=1\
and sxc_zahl_wert.bestand_id=<<Bestand>>\
and sxc_zahl_wert.katalog_id in (<<Kennzahl>>)\
/* and sxc_zahl_wert.generic_dim1 in (select object_value from sxc_mapping_bestand where target_value in (<<Lehr- und Forschungsbereich>>)) */\
;\
\
\
\
select \
--zuerst die Basisdaten:\
hs_nr as tree_lowkey,\
null::integer as ebene,\
null::varchar(255) as hochschule,\
<#foreach jahr in jahre>\
case when jahr=${jahr.jahr_int} then wert else 0 end as sxc_zahl_wert_wert_${jahr.jahr_str},\
null::decimal(19,6) as sxc_zahl_wert_wert_${jahr.jahr_str}_sum,\
</#foreach>\
\
null::char(1) as dummycol\
into temp tmp_stud\
from tmp_rpta_sxc_zahl_wert\
where 1=1 \
and bestand_id = 1\
;\
\
--ergebnistabelle:\
select \
tree_lowkey,\
ebene,\
hochschule,\
<#foreach jahr in jahre>\
sum(sxc_zahl_wert_wert_${jahr.jahr_str}) as sxc_zahl_wert_wert_${jahr.jahr_str}_sum,\
</#foreach>\
null::char(1) as dummycol\
into temp tmp_stud2\
from tmp_stud\
where 1=1\
group by 1,2,3\
;\
\
--für Prozentwerte alle Aggregate summieren:\
select \
null::char(1) as dummycol\
into temp tmp_gesamt\
from tmp_stud2\
where 1=1\
;\
\
--Sichtaufbau:\
--Zuerst leere Zieltabelle anlegen:\
select \
tree_lowkey,\
ebene,\
hochschule,\
<#foreach jahr in jahre>\
sxc_zahl_wert_wert_${jahr.jahr_str},\
sxc_zahl_wert_wert_${jahr.jahr_str}_sum,\
</#foreach>\
null::integer as sortnr\
into temp tmp_stud3\
from tmp_stud\
where 1=0;\
\
--maxEbene ermitteln:\
<#assign maxEbene=0 />\
<#foreach einElement in Hochschule.elements>\
<#if einElement.level &gt; maxEbene >\
<#assign maxEbene=einElement.level />\
</#if>\
</#foreach>\
\
-- ##################################################\
-- ######## Start der Schleife ######################\
-- ##################################################\
--Schleife, über Fächer im ausgewählten Baum, Reihenfolge genau wie im Baum\
--diese Kommentare werden schon im 1. Schritt von generateSql gelöscht\
--für Entwicklungszwecke kann man tricksen\
\
<@addcomment "SCHLEIFE"/>\
\
<#assign sortnr=0>\
<#foreach einElement in Hochschule.elements>\
\
<@addcomment "${einElement.name}"/> \
\
--zuerst Summenzeile:\
<#assign sortnr=sortnr+1>\
insert into tmp_stud3(\
tree_lowkey,\
ebene,\
hochschule,\
<#foreach jahr in jahre>\
sxc_zahl_wert_wert_${jahr.jahr_str},\
sxc_zahl_wert_wert_${jahr.jahr_str}_sum,\
</#foreach>\
sortnr)\
select\
'${einElement.key}'::char(10),\
${einElement.level}::smallint,\
'${einElement.name}'::char(200),\
<#foreach jahr in jahre>\
null,\
sum(sxc_zahl_wert_wert_${jahr.jahr_str}) as sxc_zahl_wert_wert_${jahr.jahr_str}_sum,\
</#foreach>\
--(${einElement.level}*10000) + ${sortnr} as sortnr\
${sortnr}*10000 as sortnr\
from tmp_stud\
where tree_lowkey in ${einElement.subkeys}\
\
;\
</#foreach>\
\
drop table tmp_stud2;\
select * into tmp_stud2\
from tmp_stud3;\
drop table tmp_stud3;\
--Ende Sicht\
\
select \
ebene as ebene,\
hochschule as hochschule,\
<#foreach jahr in jahre>\
case when sxc_zahl_wert_wert_${jahr.jahr_str}_sum=0 then null else sxc_zahl_wert_wert_${jahr.jahr_str}_sum end\
<#if jahr?has_next>,</#if>\
</#foreach> \
from tmp_stud2\
where 1=1 \
<#if <<Leere Zeilen anzeigen>> = 0>\
and (<#foreach jahr in jahre>\
sxc_zahl_wert_wert_${jahr.jahr_str}_sum != 0\
<#if jahr?has_next>or</#if>\
</#foreach>)\
</#if>\
order by sortnr\
;\
\
drop table if exists tmp_rpta_sxc_zahl_wert;\
drop table if exists tmp_stud;\
drop table if exists tmp_stud2;\
drop table if exists tmp_gesamt; drop table if exists tmp_stud3;^--Freemarker Template\
XIL List\
sizable_columns horizontal_scrolling\
drop_and_delete movable_columns \
white_space_color=COLOR_WHITE fixed_columns=1\
min_heading_height=55\
Column CID=0 heading_text="Ebene" center_heading explanation="Ebene"\
row_selectable heading_platform readonly\
width=10 text_size=60\
Column CID=0 heading_text="Hochschule" center_heading explanation="Ebene"\
row_selectable heading_platform readonly\
width=10 text_size=60\
<#foreach jahr in jahre>\
Column CID=0 heading_text="${jahr.jahr_str}" center_heading explanation="${jahr.jahr_str}"\
row_selectable heading_platform readonly\
width=10 text_size=60\
</#foreach>\
\
@@@^ ^ ^Übersicht über vorberechnete Kennzahlen^drop table if exists tmp_stud2; drop table if exists tmp_stud3;^^1^600^360^^0^<<SQL>>SELECT description FROM rpta_column_layout where tid=<<Spaltenlayout>>;^