Вы можете использовать функции json(b)_build_*
для генерации json (b):
create view myview as
select
id,
a,
jsonb_build_object(
'k1', b,
'k2', jsonb_build_object(
'k21', c,
'k22', d
)
) as x
from mytable
Если вы хотите, чтобы вся строка представляла собой один json объект:
create view myview as
select jsonb_build_object(
'id', id
'a', a,
'x', jsonb_build_object(
'k1', b,
'k2', jsonb_build_object(
'k21', c,
'k22', d
)
)
) val
from mytable