【发布时间】:2016-09-25 19:16:17
【问题描述】:
我有三个准备好的语句,它们从不同的表(多个选择语句 + 连接 + 子查询)到给定日期创建表,然后连接两个准备好的语句的结果,即:
CREATE TABLE _table1 AS
EXECUTE statement1('2000-01-01 00:00:00');
CREATE TABLE _table2 AS
EXECUTE statement2('2000-01-01 00:00:00');
CREATE TABLE _table3 AS
EXECUTE statement3('2000-01-01 00:00:00');
CREATE TABLE _table_all AS
SELECT *
FROM _table1
LEFT JOIN
_table3
ON _table1.var1 = _table3.var1;
Statement3 建立在 statement2 = select from _table2 之上(分开以使其更具可读性)。
我想做的是:
- 对几个日期执行相同的代码 -> 将日期作为参数传递
- 保存最终表:_table_all as _table_2000-01-01, _table_2000-02-01 itd。
我不知道如何制作这样一个循环/函数来创建表并将表名和日期作为参数传递。
预期结果:
FOR my_date IN ('2000-01-01 00:00:00', '2001-01-01 00:00:00', '2002-01-01 00:00:00'):
CREATE TABLE _table1 AS
EXECUTE statement1(@my_date);
CREATE TABLE _table2 AS
EXECUTE statement2(@my_date);
CREATE TABLE _table3 AS
EXECUTE statement3(@my_date);
CREATE TABLE _table_@my_date AS
SELECT *
FROM _table1
LEFT JOIN
_table3
ON _table1.var1 = _table3.var1;
DROP TABLE _table1;
DROP TABLE _table2;
DROP TABLE _table3;
有什么帮助吗?
【问题讨论】:
标签: postgresql function for-loop