我使用的方法可能效率不高(或可能),如果是这样,请告诉我。
我正在尝试使用SELECT INTO
选择两个值,然后将它们附加到变量(v1),该变量将由函数作为一个单元格返回。在两个UNION ALL
语句之间插入SELECT INTO
会产生ERROR: syntax error at or near "UNION"
编辑 - 该函数提供了两个为这两个SELECT INTO语句指定的唯一值(非null)
所需的输出:
v1 v2 v3 etc.
2678, 2987
摘自功能:
SELECT value
INTO v1
FROM table
WHERE year <= parameteryear;
SELECT value
INTO v1
FROM table
WHERE yearinteger >= parameteryear;
data := v1;
RETURN NEXT;
END;
$$ LANGUAGE plpgsql;
答案 0 :(得分:1)
如果要使用union all查询,它必须位于派生表中。
select value
into v1
from (union query goes here) derivedTable
答案 1 :(得分:1)
SELECT cast(t1.value as varchar(20)) || ', ' || cast(t2.value as varchar(20))
INTO v1
FROM table as t1, table as t2
WHERE t1.year <= parameteryear
AND t2.yearinteger >= parameteryear;
答案 2 :(得分:1)
每个单独的声明可疑,因为SELECT INTO
期望返回单行,但您的WHERE
条件似乎无法保证 at 。
将两者结合在一个语句中更加可疑,因为如果其中一个缺失或者NULL或不唯一,则会产生各种副作用。只有这些并发症都不会发生才有意义。我非常怀疑。
如果您至少可以保证获得两种条件的值,那么这将工作:
SELECT concat_ws(',', t1.value, t2.value)
INTO v1
FROM tbl t1, tbl t2
WHERE t1.year <= parameteryear
AND t2.yearinteger >= parameteryear;
但我几乎是积极的,它没有做你想做的事 此外,从您的期望输出判断&#34;您实际上可能需要 设置 行。
简而言之:您提供的片段没有任何意义 。发布您的完整代码以及您实际尝试实现的目标。当然,有一种不同的方法。