Postgresでgenerate_series 数値を生成する

Postgres でgenerate_seriesを利用して数値を生成します。

日付を可変してテーブルを作成するのに利用しています。特に、複数ある毎月記録しているテーブルから値を取得しようとした際に、ない月のデータがあるテーブルがあり、これを結合するために親になるテーブルとして作成しLEFT JOINさせる目的で使いました。親元のテーブルは1つで、その他のテーブルをLEFT JOINさせることで、ない月のデータがあっても、全てのテーブルの月を表示できるようにしています。

参考にしたのはPostgresのマニュアルです。
https://www.postgresql.jp/document/9.2/html/functions-srf.html
SELECT current_date + s.a AS dates FROM generate_series(0,14,7) AS s(a);

結果
2004-02-05
2004-02-12
2004-02-19

これを応用し、月を変化させるテーブルを作成しました。
SELECT to_number(to_char(current_date – interval ‘1 month’ * s.a,’YYYYMM’),’999999′) AS dates FROM generate_series(0,23) AS s(a);

結果
201711
201710
201709
201708
201707
201706
201705
201704
201703
201702
201701
201612
201611
201610
201609
201608
201607
201606
201605
201604
201603
201602
201601
201512

現在の月から、1か月ずつ減算し、2年間分の月度データテーブルを作成しています。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です