在postgres中将行汇总为jsonb

时间:2018-09-04 06:49:56

标签: sql postgresql jsonb

key            | value            | col
----------------------------------------
color          | red              | g1
color          | blue             | g2
contrast       | {'l':123456}     | g1
setting        | srnew            | g2
contrast       | {'s':123456}     | g1    

key        | value                    | col
---------------------------------------------
color      | ['red']                  | g1
color      | ['blue']                 | g2
contrast   | [{'l':123456}, {'s':456}]| g1
setting    | ['srnew']                | g2

如何将第一个表聚合到第二个表?

value的类型为jsonb。我也希望结果列value也为jsonb。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用array_agg按concat分组,然后使用array_to_json到json数组。

SELECT array_to_json(array_agg(value)) 
FROM t
group by key,col