postgresql Postgres -如何将json行聚合到单个json对象中

w46czmvw  于 2023-04-05  发布在  PostgreSQL
关注(0)|答案(2)|浏览(154)

我有这样一行JSON:

1. {"0": 2}
2. {"2": 0}
3. {"3": 0}
4. {"4": 1}
5. {"13": 0}

如何将其转换为单个对象?

{
  "0": 2,
  "2": 0,
  "3": 0,
  "4": 1,
  "13": 0
}

我尝试使用jsonb_agg进行试验,但不起作用

xmjla07d

xmjla07d1#

你可以使用jsonb_each将对象分割成一组键/值对,然后使用jsonb_object_agg将聚合的键/值对作为jsonb对象返回:

select jsonb_object_agg(c.key, c.value) as myJson
FROM mytable, jsonb_each(myjson) as c

Demo here

nbewdwxp

nbewdwxp2#

我认为最简单的方法是定义一个可以做到这一点的聚合:

create aggregate jsonb_concat_agg(jsonb) 
(
  sfunc = jsonb_concat(jsonb, jsonb),
  stype = jsonb
);

然后您可以:

select jsonb_concat_agg(the_column)
from the_table;

相关问题