Berichtsassistent
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.
 
 
 
 
 

128 lines
3.1 KiB

--Freemarker Template
<#include "SQL_lingua_franca"/>
<#include "SuperX_general"/>
<#include "RPTA-Makros"/>
--
--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,
R.uniquename as rpta_name
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>
<sqlvar name="rpta_clauses" type="hashsequence"><![CDATA[
select distinct R.uniquename as rpta_uniquename, R.fieldclause, R.joinclause, R.whereclause from sx_tables T, rpta_resultset R
where T.name=R.uniquename
and R.is_virtual=0
]]>
</sqlvar>
</sqlvars>
<#if basetables?has_content>
<#foreach basetable in basetables>
<#if basetable.is_virtual==0>
<#foreach rpta_clause in rpta_clauses>
<#assign whereclauseTemplate= "<#assign whereclause=\""+rpta_clause.whereclause +"\">"/>
<#assign t2=whereclauseTemplate?interpret />
<@t2/>
<#if rpta_clause.rpta_uniquename=basetable.uniquename>
<#if rpta_clause.joinclause?exists && rpta_clause.joinclause !=''>
<#assign sqlString = "select current_timestamp as creation_date, " + parseRepoVars(rpta_clause.fieldclause) + " from " + rpta_clause.joinclause + " where 1=1 " + parseRepoVars(rpta_clause.whereclause) />
<#else>
<#assign sqlString = "select current_timestamp as creation_date, " + parseRepoVars(rpta_clause.fieldclause) + " where 1=1 " + parseRepoVars(rpta_clause.whereclause) />
</#if>
drop table if exists ${basetable.runtime_tablename};
create temp table tmp_${basetable.runtime_tablename} as
${sqlString}
;
</#if>
</#foreach>
--Summierung:
<#if basetable_columns?has_content>
<#assign groupby=0 />
drop table if exists ${basetable.runtime_tablename};
create table ${basetable.runtime_tablename} as
select
<#foreach basetable_column in basetable_columns>
<#if basetable_column.rpta_name=basetable.uniquename>
<#if basetable_column.is_sum=0>
<#assign groupby=groupby+1 />
${basetable_column.name},
<#else>
sum(${basetable_column.name})::float as ${basetable_column.name},
</#if>
</#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
<#foreach basetable_column in basetable_columns>
<#if basetable_column.rpta_name=basetable.uniquename>
<#if basetable_column.is_sum=0>
create index ix_${basetable.runtime_tablename}_${basetable_column.name} on ${basetable.runtime_tablename}(${basetable_column.name});
--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>
</#if>
</#foreach>
</#if> --Ende is_virtual=0
</#foreach>
</#if>