2 changed files with 92 additions and 0 deletions
@ -0,0 +1,91 @@ |
|||||||
|
--Freemarker Template |
||||||
|
<#include "SQL_lingua_franca"/> |
||||||
|
<#include "SuperX_general"/> |
||||||
|
-- |
||||||
|
--Autor D. Quathamer 2024 |
||||||
|
<sqlvars> |
||||||
|
<sqlvar name="basetables" type="hashsequence"><![CDATA[ |
||||||
|
SELECT distinct T.name, |
||||||
|
R.is_virtual, |
||||||
|
T.name as runtime_tablename, |
||||||
|
R.caption, |
||||||
|
R.uniquename, |
||||||
|
R.fieldclause, |
||||||
|
R.joinclause, |
||||||
|
R.whereclause, |
||||||
|
R.systeminfo_id |
||||||
|
from sx_tables T, rpta_resultset R |
||||||
|
where T.name=R.uniquename |
||||||
|
and R.is_virtual=0 |
||||||
|
|
||||||
|
]]> |
||||||
|
</sqlvar> |
||||||
|
<sqlvar name="basetable_columns" type="hashsequence"><![CDATA[ |
||||||
|
SELECT distinct T.name as table_name, |
||||||
|
F.name, |
||||||
|
F.is_sum |
||||||
|
from sx_tables T, rpta_resultset R , sx_fields F |
||||||
|
where T.name=R.uniquename |
||||||
|
and R.is_virtual=0 |
||||||
|
and F.table_name=T.name |
||||||
|
order by F.is_sum,2,3 |
||||||
|
|
||||||
|
|
||||||
|
]]> |
||||||
|
</sqlvar> |
||||||
|
</sqlvars> |
||||||
|
|
||||||
|
<#if basetables?has_content> |
||||||
|
<#foreach basetable in basetables> |
||||||
|
|
||||||
|
<#if basetable.is_virtual==0> |
||||||
|
|
||||||
|
drop table if exists ${basetable.runtime_tablename}; |
||||||
|
|
||||||
|
create temp table tmp_${basetable.runtime_tablename} as |
||||||
|
select ${basetable.fieldclause} , |
||||||
|
today() as creation_date |
||||||
|
from ${basetable.joinclause} |
||||||
|
where 1=1 |
||||||
|
<#if basetable.whereclause != ""> |
||||||
|
${basetable.whereclause} </#if> |
||||||
|
; |
||||||
|
--Summierung: |
||||||
|
<#if basetable_columns?has_content> |
||||||
|
<#assign groupby=0 /> |
||||||
|
create table ${basetable.runtime_tablename} as |
||||||
|
select |
||||||
|
<#foreach basetable_column in basetable_columns> |
||||||
|
|
||||||
|
<#if basetable_column.is_sum=0> |
||||||
|
<#assign groupby=groupby+1 /> |
||||||
|
${basetable_column.name}, |
||||||
|
<#else> |
||||||
|
sum(${basetable_column.name})::float as ${basetable_column.name}, |
||||||
|
</#if> |
||||||
|
|
||||||
|
</#foreach> |
||||||
|
creation_date |
||||||
|
from tmp_${basetable.runtime_tablename} |
||||||
|
group by |
||||||
|
<#list 1..groupby as i>${i}, |
||||||
|
</#list> |
||||||
|
creation_date |
||||||
|
; |
||||||
|
|
||||||
|
|
||||||
|
drop table tmp_${basetable.runtime_tablename}; |
||||||
|
|
||||||
|
</#if> --Ende Summierung |
||||||
|
|
||||||
|
--TODO: indizes |
||||||
|
create index ix_geschlecht_dashboard_mw on ${basetable.runtime_tablename}(geschlecht); |
||||||
|
create index ix_tid_stg_dashboard_mw on ${basetable.runtime_tablename}(tid_stg); |
||||||
|
create index ix_sem_rueck_beur_ein_dashboard_mw on ${basetable.runtime_tablename}(sem_rueck_beur_ein); |
||||||
|
|
||||||
|
</#if> --Ende is_virtual=0 |
||||||
|
</#foreach> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</#if> |
Loading…
Reference in new issue