sql—如何使用postgresql获取json对象作为列值?

sulc1iza  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(259)

我有如下数据

id | customer  | region   | circle
----------------------------------
 1 | airtel    | tn       | c1
 2 | reliance  | ap       | c2

我期望使用postgresql得到如下json输出
json文件

[
    {"id":"1_airtel","parent":"#","text":"airtel"},
    {"id":"1_airtel_tn","parent":"1_airtel","text":"tn"},
    {"id":"1_airtel_tn_c1","parent":"1_airtel_tn","text":"c1"},
    {"id":"2_reliance","parent":"#","text":"reliance"},
    {"id":"2_reliance_ap","parent":"2_reliance","text":"ap"},
    {"id":"2_reliance_ap_c2","parent":"2_reliance_ap","text":"c2"}
]
w8f9ii69

w8f9ii691#

一个选项使用横向连接生成行,然后使用json函数 to_jsonb() 把它们变成物体。最后一步是聚合:

select jsonb_agg(to_jsonb(v)) res
from mytable t
cross join lateral (values
    (
        concat_ws('_', id::text, customer), 
        '#', 
        customer
    ),
    (
        concat_ws('_', id::text, customer, region), 
        concat_ws('_', id::text, customer), 
        region
    ),
    (
        concat_ws('_', id::text, customer, region, circle), 
        concat_ws('_', id::text, customer, region), 
        circle
    )
) v(id, parent, text)

db小提琴演示

相关问题