I have a 1-dimensional array of values in Postgres, such as:
[ "1", "4", "2", "5", "3", "6" ]
Is there a way to change this to a 2-D array?
[ ["1", "4"], ["2", "5"], ["3", "6"] ]
Now the dimensions are 3x2 instead of 1x6.
Use two aggregates:
select array_agg(arr order by ord)
from (
select (ord+ 1) / 2 as ord, array_agg(arr) as arr
from unnest(array[1,4,2,5,3,6]) with ordinality as u(arr, ord)
group by 1
) s
or an array constructor:
select array(
select array_agg(unnest)
from unnest(array[1,4,2,5,3,6]) with ordinality
group by (ordinality+ 1) / 2
order by (ordinality+ 1) / 2
)
AS int[2][]?reshapeessentially.