有没有办法根据表行数据在视图中生成列?

时间:2017-09-14 08:59:00

标签: postgresql function view jsonb

我有这个包含app& amp;的设置的表。我只是想在视图中显示它。每个设置的数据都存储为一行。

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

现在这是一个复杂的地方,我必须在视图中将这些行转换为jsonbvalue列名称的关键字必须基于Code列数据的值。

以下是首选jsonb的示例:

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

我想在我看来做这样的事情:

SELECT .. FROM generate_jsonb()

那么如何实现这样的jsonb?

编辑:如果有帮助,我正在使用v9.6。

1 个答案:

答案 0 :(得分: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)