Как получить объект json в качестве значений столбца, используя postgresql? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть данные, подобные ниже

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

Я ожидаю вывода json, как показано ниже, используя PostgreSQL

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"}
]

1 Ответ

0 голосов
/ 27 мая 2020

Один вариант использует боковое соединение для создания строк, а затем 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 Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...