json - 从 GROUP BY 语句在 Postgresql 中创建 JSON 值

标签 json postgresql

我希望为每个分组字段创建单个 JSON 对象,并尝试使用 json_build_object 来实现此目的。但返回结果却是多个json值。

下面是代码

with t(product, key, value) as 
(
    values 
    ('A','category', 'food'),
    ('A','price', '4.00'),
    ('B','category', 'book'),
    ('B','price', '20.00'),
    ('B','genre', 'Sci-Fi')
)
select product, json_build_object(key, value) from t
group by product, key, value

收到的结果是

"A" | "{""price"" : ""4.00""}"
"A" | "{""category"" : ""food""}"
"B" | "{""genre"" : ""Sci-Fi""}"
"B" | "{""category"" : ""book""}"
"B" | "{""price"" : ""20.00""}"

我想要的结果是

"A" | "{ 'price' : 4.00, 'category': 'food' }"
"B" | "{ 'genre' : 'Sci-Fi', 'category': 'book', 'price': 20.00 }"

最佳答案

这就是 jsonb_object_agg() 的用途:

select product, jsonb_object_agg(key, value) 
from t
group by product

Online example

关于json - 从 GROUP BY 语句在 Postgresql 中创建 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64443829/

相关文章:

sql - 如何从 postgresql sql 表中删除重复行

sql - PGSQL 查询以在每个用户名中使用特定字母进行排序

sql - 在 PostgreSQL 中,如何让多个检查约束引用相同的值数组?

javascript - 缩短表格中的数据数量

javascript - 无法从其余服务器获取 Json 响应

java - 无法以 POJO 类作为值反序列化 Map

sql - 滑动1小时周期聚合查询

javascript - 如何使用 Javascript 将 JSON 响应下载到 Excel?

javascript - 使用 JSON.parse 将字符串(变量)转换为对象,错误意外标记

ruby-on-rails - Rails 未运行迁移