kun je een subselectie gebruiken?
postgres=# select ar[1], ar[2] from (select string_to_array('a b c', ' ') ar) as sq;
ar | ar
----+----
a | b
(1 row)
Dit vereist nog steeds dat je elke kolom expliciet extraheert (zoals je al doet). Als er meer elementen in de array zijn dan geëxtraheerd, gaan ze verloren en als er minder zijn, zijn de ontbrekende kolommen gewoon NULL
.
EDIT:ik denk dat ik het hele ding in een subselect zou verpakken; de binnenste subselect genereert de gewenste rijen , waarbij de buitenste selectie de binnenste query projecteert in de gewenste kolommen :
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;
De binnenste en buitenste selecties correleren correct met de table1
referenties.