можете ли да използвате подизбор?
postgres=# select ar[1], ar[2] from (select string_to_array('a b c', ' ') ar) as sq;
ar | ar
----+----
a | b
(1 row)
Това все още изисква изрично извличане на всяка колона (както вече правите). Ако в масива има повече елементи от извлечените, те ще бъдат загубени, а ако са по-малко, тогава липсващите колони просто ще бъдат NULL
.
РЕДАКТИРАНЕ:Мисля, че бих обвил цялото нещо в подизбор; вътрешният подизбор генерира желаните редове , като външната селекция проектира вътрешната заявка в желаните колони :
SELECT subquery1.a, subquery1.b, subquery1.c,
myfunction_result[1], myfunction_result[2]
FROM ( SELECT table1.a, table1.b, table1.c,
MyFunction(table1.a, table1.b, table1.c) as myfunction_result
FROM table1 INNER JOIN table2 using(b)
WHERE ... GROUP BY table1.a, table1.b, table1.c
) AS subquery1;
Вътрешният и външният избор ще корелират правилно table1
препратки.