Postgres:动态创建一个temporat表

时间:2017-01-24 12:56:25

标签: sql postgresql

我想基于一些变量创建报告,其中一个变量是一年中的几个月。我想创建一个只包含所需期间的临时表。这就是我想出的:

我遇到麻烦的部分放在<<<<和>>

DO $$
DECLARE myPeriodFrom INTEGER := 7;
DECLARE myPeriodTo INTEGER := 9;
DECLARE myColumn VARCHAR(255) := 'Period';
BEGIN
    DROP TABLE IF EXISTS tmpTable;
    CREATE TABLE tmp_table (tmpId INT, tmpDesc varchar(255));
    FOR i IN myPeriodFrom..myPeriodTo LOOP
        -- Create dynamic column name and fill with data
        << code here >> -- myColumn := (myColumn || CAST(i AS VARCHAR)); 
        ALTER TABLE tmpTable ADD COLUMN << myColumn >> INT;
        INSERT INTO tmpTable (myId, myColumn)
            SELECT "Id", "YearAdded" FROM "Item" WHERE "Item"."MonthAdded" = i;
    END LOOP;

END $$;
SELECT * FROM tmpTable

1 个答案:

答案 0 :(得分:0)

有点遗憾,我害怕得出结论,我想要的是不可能的。动态创建列没有真正可行的解决方案。 其次,我使用查询的应用程序结果不支持动态输出的查询。由于这些原因,我不得不重新考虑我的整个方法。

对于那些阅读并提出建议的人,谢谢。