Sql 选择另一个表的数组或列的内容作为行标题

Sql 选择另一个表的数组或列的内容作为行标题,sql,postgresql,Sql,Postgresql,我试图创建一个表:比如时间序列中的位置度量 place 1990 1991 1992 1993 NM 23 34 21 43 .. .. .. .. .. 数据源表将每年作为一行。我需要动态创建标题19901991。。。通过查看源表并在那里获取度量 这是在PostgreSQL中 我创建了一个年份数组,并试图通过循环生成一个表来“选择”年份。请看代码 DO $do$ DECLARE time varchar; BEGIN FOREACH t

我试图创建一个表:比如时间序列中的位置度量

place 1990 1991 1992 1993
NM     23   34   21   43
..     ..   ..   ..   ..
数据源表将每年作为一行。我需要动态创建标题19901991。。。通过查看源表并在那里获取度量

这是在PostgreSQL中

我创建了一个年份数组,并试图通过循环生成一个表来“选择”年份。请看代码

DO
$do$
DECLARE
    time varchar;
BEGIN
    FOREACH time IN ARRAY  (select ARRAY_agg(a) from (select year from headers) as a)
    LOOP 
       select time;
    END LOOP;
END;
$do$
这段代码不会运行,但我希望看到的结果相当于,而不必将日期键入字符串(它们在另一个表中)


您可能想看另一篇文章,介绍如何转置:


我找到了这个问题的解决办法

DO
$do$
DECLARE
    time varchar;
BEGIN
    FOREACH time IN ARRAY(//data returned from select)
    LOOP 
        EXECUTE format('ALTER TABLE table_name ADD COLUMN %s datatype;', btrim(time,'()')); 
        -- brtim was necessary as time is returned as (jan-2019).. with the brackets       
    END LOOP;
END;
$do$;

我要说的是,只需两个查询就可以得到第一行
DO
$do$
DECLARE
    time varchar;
BEGIN
    FOREACH time IN ARRAY(//data returned from select)
    LOOP 
        EXECUTE format('ALTER TABLE table_name ADD COLUMN %s datatype;', btrim(time,'()')); 
        -- brtim was necessary as time is returned as (jan-2019).. with the brackets       
    END LOOP;
END;
$do$;