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