2016-04-18 13 views
1

私はPostgres 9.4を使用し、JSONB配列としてデータを格納しています。私は、配列内のjson要素を抽出し、それらをpsqlを使って1つの連結json要素に置き換える方法を探しています。テーブル次の例のように考えてみましょう:私は達成するために探しています何postgresでのJSONB配列のフラット化

'aaa' | [{"a":"foo"},{"b":"bar"},{"c":["baz", 'boom']}] | 404 
'bbb' | [{"bar":"foo"}]         | 501 

は次のとおりです。

'aaa' | {"a":"foo", "b":"bar", "c":["baz", "boom"]}  | 404 
'bbb' | {"bar":"foo"}         | 501 

私はJSONタイプのために組み込みPostgresの機能を使用してそれを達成しようとしています。しかし、私はどのように正確な位置に要素を抽出するかを考え出しました。 ありがとうございます。

答えて

1
SELECT id, jo.obj 
FROM mytable 
CROSS JOIN 
     LATERAL 
     (
     SELECT JSON_OBJECT_AGG(jt.key, jt.value) obj 
     FROM JSONB_ARRAY_ELEMENTS(data) je 
     CROSS JOIN 
       LATERAL JSONB_EACH(je.value) jt 
     ) jo 
関連する問題