「動的に」することはできません。必要な列を指定する必要があります。
select name, description, id,
data ->> 'tax' as tax,
data ->> 'other_attribute' as other_attribute
from core;
これをたくさん行う場合は、その列をビューに配置するとよいでしょう。
別のオプションは、例えば、あなたのJSONに属性を表しPostgresのでオブジェクト型を作成することです
create type core_type as (id integer, tax numeric, price numeric, code varchar);
あなたは、その型にJSONをキャストすることができますし、JSONから対応する属性が自動的に列に変換されます。
上記のタイプと、次のJSONで:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"}
あなたが行うことができます。
select id, (json_populate_record(null::core_object, data)).*
from core;
、それが返されます:
id | tax | price | code
---+------+-------+-----
1 | 4.50 | 10 | YXCV
しかし、すべてのJSON値がに対応するオブジェクトフィールドの型にキャストできることを確認する必要があります。
オブジェクトタイプを変更すると、オブジェクトタイプを使用するクエリは自動的に更新されます。したがって、関心のある列を集中定義で管理することができます。
参照[Postgresの:JSONBフィールドから集約されたキー/値のペアを平ら?](http://stackoverflow.com/a/ 35179515/1995738) – klin