Postgresql
將對象聚合到 json 數組中(子查詢問題)
我很抱歉這個模糊的標題,但我根本不知道合適的詞來描述這個。
我有這個查詢將一堆列轉換為一個可以正常工作的對象:
SELECT row_to_json(t) FROM ( SELECT type, properties, geometry FROM "bgbCargoMinardJSON" ) t
但是,我想將屬於某個類別的對象分組到一個數組中。此類別由我的表中名為“cargoProductId”的第四列定義。該數組應以“cargoProductId”的值作為鍵。所以:
"961":[ {"type":"Feature",.... {"type":"Feature",.... {"type":"Feature",.... ], "962":[ ..... ]
所以在過去的 1 1/2 小時左右,我一直在努力解決這個問題。我真的不知道該怎麼做。這就是我現在所擁有的:
SELECT array_agg(row_to_json(t)) FROM ( SELECT type, properties, geometry FROM "bgbCargoMinardJSON" ) t) FROM "bgbCargoMinardJSON" GROUP BY "carProductId"
如果您使用的是 9.4,則可能是您所追求的:
select json_object(array_agg(id)::text[],array_agg(rw)::text[]) from( select id , ( select to_json(array_agg(row_to_json(t))) from (select typ,prop from bgb where id=b.id) t ) rw from bgb b group by id ) z;
擴展傑克答案:刪除撇號和斜線使用
json_build_object
select json_build_object(id,rw) from( select id , ( select to_json(array_agg(row_to_json(t))) from (select typ,prop from bgb where id=b.id) t ) rw from bgb b group by id ) z;
我認為它會起作用。