Есть ли способ генерировать столбцы в представлении на основе данных строки таблицы?

У меня есть эта таблица, которая содержит настройки приложения, и я просто хочу показать его в представлении. Данные каждого параметра сохраняются в виде строки.

Code (varchar64)| Value (varchar1000)
----------------------
ALLOW_MAC_ADDR  | 1
----------------------
ALLOW_SAVE      | 1
----------------------
USER_ALIAS      | James

Теперь это где-то довольно сложно, я должен преобразовать эти строки в jsonb на вид. Ключ для value Имя столбца должно основываться на значении Code данные столбца.

Вот пример предпочтительного jsonb:

[dt:{ALLOW_MAC_ADDR: 1, ALLOW_SAVE: 1, USER_ALIAS: 'James'}]

Я думаю сделать что-то подобное на мой взгляд:

SELECT .. FROM generate_jsonb()

Так как же мне добиться такого jsonb?

РЕДАКТИРОВАТЬ: я использую v9.6, если это помогает.

1 ответ

Решение

https://www.postgresql.org/docs/current/static/functions-json.html

агрегатная функция json_object_agg, которая агрегирует пары значений в объект JSON

например:

t=# create table tt(code text, value text);
CREATE TABLE
t=# insert into tt values('ALLOW_MAC_ADDR',1),('USER_ALIAS','James');
INSERT 0 2
t=# select json_object_agg(code,value) from tt;
                  json_object_agg
----------------------------------------------------
 { "ALLOW_MAC_ADDR" : "1", "USER_ALIAS" : "James" }
(1 row)
Другие вопросы по тегам