我有一个名为的 SQL 函数get_forecast_history(integer,integer)
,它接受两个参数,一个月和一年。该函数返回使用以下命令创建的 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);
例如生成下表(函数的结果类型为表 ie 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
哪些产品列表如下:
嗯 ---------- 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。