带分组和聚合的SQL行到Json数组

时间:2019-04-25 18:25:52

标签: sql json postgresql

我的目标是从具有特定ID的行中获取数据,并将其转换为JSON对象以插入到另一个表中。我从这里开始的样子

      Event_Details
-----------------------------------
ID | ID2  | First_Name| Last_Name | 
-----------------------------------
1X | 2B   | John      | Smith     |
2X | 2B   | Adam      | John      | 
3X | 2B   | Sarah     | Jones     | 
1X | 5C   | Joe       | Rob       |

我想要的内容如下:

[
  {
    "id2": "2B",
    "event": {
      "ID": "1X",
      "First_Name": "John",
      "Last_Name": "Smith" 
    }
  },
{
    "id2": "5C",
    "event": {
      "ID": "1X",
      "First_Name": "Joe",
      "Last_Name": "Rob" 
    }
  }
]

我需要通过“ ID”将项目归为一个JSON对象,但我希望id2在“事件”数组之外。

到目前为止,这是我要做的第一件事,只是在将查询嵌套在其中时遇到了麻烦:

select json_agg (b)
        from (select ID2 as "ID2"
        from event_details 
)b

1 个答案:

答案 0 :(得分:0)

我相信这就是您想要的:

select json_agg(jsonb_build_object('id2', id2, 
                    'event', jsonb_build_object('ID', id, 
                                                 'First_Name', first_name, 
                                                 'Last_Name', last_name
))) 
from event_details group by id;