2017-09-14 93 views
0

我有這張表,其中包含一個應用程序的設置&我只是想在視圖中顯示它。每個設置的數據存儲爲一行。有沒有辦法根據錶行數據在視圖中生成列?

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支持有很大不同 –

回答

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

這些是硬編碼,我正在尋找的東西,選擇'代碼'的數據和使用它作爲關鍵&循環遍歷整個記錄 –

+0

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

相關問題