Одним из ограничений SQL является то, что количество столбцов (и их типы данных) запроса должно быть известно базе данных до того, как запрос будет выполнен. Таким образом, невозможно получить динамический запрос, который возвращает 3 столбца сегодня и 42 завтра.
Если у вас есть статическое число элементов массива (или, по крайней мере, верхний предел), вы можете использовать следующее:
select the_column -> 'instances' -> 0 ->> 'code' as code_1,
the_column -> 'instances' -> 1 ->> 'code' as code_2,
the_column -> 'instances' -> 2 ->> 'code' as code_3
from the_table;
, вы можете упростить этот бит, используя производную таблицу:
select inst -> 0 ->> 'code' as code_1,
inst -> 1 ->> 'code' as code_2,
inst -> 2 ->> 'code' as code_3
from (
select the_column -> 'instances' as inst
from the_table
) t