动态列交叉表-Postgresql

时间:2020-10-20 19:39:05

标签: database postgresql

我正在准备一个函数,该函数使我可以返回数据透视表(使用交叉表函数),但是现在,我一开始不知道要具有的列数。这就是为什么我创建了一个用于构造查询字符串的函数,但是却无法获取表本身的原因。 你可以帮帮我吗?函数返回空结果

    CREATE OR REPLACE FUNCTION eq_rfi_generacion_crosstab_tabla(fecha_inicial date,fecha_final date) RETURNS void LANGUAGE plpgsql
as 
$$
DECLARE
lista_columnas text;
texto text;

BEGIN
    select string_agg(DISTINCT(pais),' NUMERIC ,') into lista_columnas from eq_rfi_generacion(fecha_inicial,fecha_final) where generacion_total<>0 order by 1;
    lista_columnas = lista_columnas || ' NUMERIC';
    texto = 'SELECT * FROM crosstab(''select cat,pais,sum(generacion_total) from eq_rfi_generacion(' || concat('''''',fecha_inicial,'''''') || ',' || concat('''''',fecha_final,'''''') || ') where generacion_total<>0 group by cat,pais order by cat,pais desc '',
    ''SELECT DISTINCT(pais) from eq_rfi_generacion(' || concat('''''',fecha_inicial,'''''') || ',' || concat('''''',fecha_final,'''''') || ') where generacion_total<>0 order by 1 '')
    as ct(
    pais text,
    ' ||lista_columnas||')';
    EXECUTE texto;
    
END;
$$;

我认为执行此类操作有问题。 你可以帮帮我吗?预先感谢。

enter image description here

0 个答案:

没有答案