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
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 > 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>>;^
|
|
|