2017-01-24 15 views
0

いくつかの変数に基づいてレポートを作成したいと思います。私は希望の期間だけを含む一時テーブルを作成したいと思います。私がしたいことはない私は、私はそれを締結する怖い少し後悔して< <と>>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 
+1

なぜ、 'generate_series()'があなたの望むものとおそらく一時テーブルを使用するのですか? –

+0

もちろん、 'generate_series()'はこのトリックをあまり行っていません。列が必要です。これが動作するとき、 'SELECT'内で他の計算が行われなければなりません。しかし、ありがとう。 – Remco

答えて

0

の間に配置されているとのトラブルを抱えている

パーツ:ここに私が思い付いたものです可能。動的に列を作成するための実用的なソリューションはありません。 第2に、私がクエリを使用しているアプリケーションが、動的出力を持つクエリをサポートしていないことが判明しました。これらの理由から、私は全体のアプローチを再考しなければならなかった。

それを読んで提案をくれた方には、ありがとう。

関連する問題