我希望为每个分组字段创建单个 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
关于json - 从 GROUP BY 语句在 Postgresql 中创建 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64443829/