我正在准备一个函数,该函数使我可以返回数据透视表(使用交叉表函数),但是现在,我一开始不知道要具有的列数。这就是为什么我创建了一个用于构造查询字符串的函数,但是却无法获取表本身的原因。 你可以帮帮我吗?函数返回空结果
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;
$$;
我认为执行此类操作有问题。 你可以帮帮我吗?预先感谢。