get_forecast_history(integer,integer)
月と年の 2 つの引数を取るSQL 関数が呼び出されました。この関数は、以下で作成された CUSTOM TYPE を返します。
CREATE TYPE fcholder AS (y integer, m integer, product varchar, actual real);
関数定義の最初の行は次のとおりです。
CREATE OR REPLACE FUNCTION get_forecast_history(integer, integer)
RETURNS SETOF fcholder AS $$
呼び出し:
SELECT * FROM get_forecast_history(10, 2011);
たとえば、次のテーブルが生成されます (関数の結果の型はテーブルですSETOF
)。
ym 製品の実際の ---- -- -------- ------ 2011 10 製品1 29 2011 10 製品2 10 2011 10 製品3 8 2011 10 製品4 0 2011 10 製品5 2
など(全部で約30商品)。これは、特定の月の履歴です。
一連の月を生成する別のクエリもあります。
SELECT to_char(DATE '2008-01-01'
+ (interval '1 month' * generate_series(0,57)), 'YYYY-MM-DD') AS ym
次のようなリストの製品:
ym ---------- 2008-01-01 2008-02-01 2008-03-01 2008-04-01 ... 2011-10-01
の結果を引数として関数に渡すことにより、上記の関数の年/月の組み合わせLEFT JOIN
の結果をどうにかして取得する必要があります。このようにして関数の結果を取得しますが、. この時点で私は立ち往生しています。generate_series
generate_series
generate_series
PostgreSQL 8.3.14 を使用しています。