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

问题描述:

我有这张表,其中包含一个应用程序的设置&我只是想在视图中显示它。每个设置的数据存储为一行。有没有办法根据表行数据在视图中生成列?

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,如果有帮助。

+0

什么是你的Postgres版本?现有的json函数有什么问题? –

+0

版本没什么问题,我只是需要一个有效的例子来生成这样的jsonb –

+0

请用postgres版本更新您的文章 - 几年后json支持的json支持有很大不同 –

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) 
+0

这些是硬编码,我正在寻找的东西,选择'代码'的数据和使用它作为关键&循环遍历整个记录 –

+0

不,它们不是 - 它就像在你的文章 –