Postgres:动态创建临时表



我想根据几个变量创建一个报告,其中一个变量是一年中的月份。我想创建一个仅包含所需时间段的临时表。这是我想到的:

我遇到问题的部件放置在<<和>>之间

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

带着一点遗憾,我不敢断定我想要的是不可能的。动态创建列没有真正可行的解决方案。其次,我正在使用查询的应用程序不支持具有动态输出的查询。出于这些原因,我不得不重新考虑我的整个方法。

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

最新更新