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