Изразите след select трябва да се оцени на една стойност. Тъй като jsonb_to_recordset връща набор от редове и колони, не можете да го използвате там.
Решението е cross join lateral , което ви позволява да разширите един ред в множество редове с помощта на функция. Това ви дава единични редове, които select може да действа върху. Например:
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'
Имайте предвид, че #>> оператор
връща тип text и #> операторът връща тип jsonb . Като jsonb_to_recordset очаква jsonb като първи параметър използвам #> .
Вижте как работи на rextester.com