有没有办法根据表行数据在视图中生成列?
我有这张表,其中包含一个应用程序的设置&我只是想在视图中显示它。每个设置的数据存储为一行。有没有办法根据表行数据在视图中生成列?
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,如果有帮助。
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)
这些是硬编码,我正在寻找的东西,选择'代码'的数据和使用它作为关键&循环遍历整个记录 –
不,它们不是 - 它就像在你的文章 –
什么是你的Postgres版本?现有的json函数有什么问题? –
版本没什么问题,我只是需要一个有效的例子来生成这样的jsonb –
请用postgres版本更新您的文章 - 几年后json支持的json支持有很大不同 –