我想创建表多年。 我的查询的基本结构如下:
drop table if exists stock;
create table stock as
select distinct t1.id, t2.id_, t2.year
from mytable t1
join mytable_ t2 on t1.person = t2.person
where t2.year = y_current;
y_current> = 1980和< = 2015。
我的想法是使用一个函数来循环多年,但我不知道如何在循环中调整表名。理想情况下,代码会创建表 stock_1980,stock_1981,....,stock_2005,即创建包含年份的表格。 我很抱歉这个问题,我来自其他语言的不同领域,这种操作有效!
CREATE OR REPLACE FUNCTION main(IN y_current INT) RETURNS VOID AS $$
DECLARE y_current INT;
BEGIN
y_current := 1980;
WHILE y_current < 2015 + 1 LOOP
drop table if exists stock_y_current;
create table stock_y_current as
select distinct t1.id, t2.id_, t2.year
from mytable t1
join mytable_ t2 on t1.person = t2.person
where t2.year = y_current;
where t1.earliest_filing_year = y_current;
y_current := y_current + 1;
END LOOP;
RETURN;
END;
$$ language 'plpgsql';