微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql json聚合

我正在使用postgres 9.4,我有以下查询

SELECT pid,code,name FROM activity,(
  SELECT code FROM project
) projects WHERE activity.pcode = projects.code;

返回以下关系:

pid | code |    name    
-------------------------------
  1 | p1   | activity1 
  1 | p3   | activity2
  2 | p1   | activity3
  2 | p2   | activity4
  2 | p3   | activity5

我试图编写相同的查询,但我得到项目代码一个活动名称作为相对于每个“pid”的json数组

所以我正在寻找一个返回如下内容查询

pid | json    
------------------------------------------------------------------------------------
  1 | [{'code': 'p1','name': 'activity1'},{'code': 'p3','name': 'activity2'}] 
  2 | [{'code': 'p1','name': 'activity3'},{'code': 'p2','name': 'activity4'},'name': 'activity5'}]

有任何想法吗?
在此先感谢您的帮助

UPDATE

这是我做的(这与Abelisto所说的很接近):

SELECT pid,json_agg(json_build_object('code','name',name)) AS agg                                                                                                                                    
FROM activity JOIN (                                                                                                                                                                                          
  SELECT code FROM project                                                                                                                                                                                    
) AS p ON p.code=activity.pcode                                                                                                                                                                               
GROUP BY pid;

解决方法

select
  pid,name))
from
  ...
group by
  pid

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐