Las expresiones después de select
debe evaluar a un solo valor. Desde jsonb_to_recordset
devuelve un conjunto de filas y columnas, no puede usarlo allí.
La solución es un cross join lateral
, que le permite expandir una fila en varias filas usando una función. Eso le da filas individuales que select
puede actuar sobre. Por ejemplo:
select *
from journal j
cross join lateral
jsonb_to_recordset(j.data#>'{context, data, files}') as d(id int, name text)
where j.id = 'ap32bbofopvo7pjgo07g'
Tenga en cuenta que #>>
operador
devuelve tipo text
y el #>
el operador devuelve el tipo jsonb
. Como jsonb_to_recordset
espera jsonb
como su primer parámetro estoy usando #>
.
Véalo funcionando en rextester.com