1

私のタブラデータは次のとおりです。

_id 製品番号 商品名 販売価格 購入金額
1 prd_1 製品1 15 12 アメリカ合衆国
2 prd_1 製品1 16 13 カナダ
3 prd_2 製品2 7 5 中国
4 prd_2 製品2 12 10 日本

製品ごとにグループ化し、json形式に変換したい。次のような最終版が欲しいです。

{ 
    "_id" : "prd_1", 
    "details" : [
        {
            "_id" : 1, 
            "product_id" : "prd_1", 
            "product_name" : "product one", 
            "sell_price" : 15, 
            "purchase_price" : 12, 
            "country" : "usa"
        }, 
         {
            "_id" : 2, 
            "product_id" : "prd_1", 
            "product_name" : "product one", 
            "sell_price" : 16, 
            "purchase_price" : 13, 
            "country" : "canada"
        },   
    ]
}
{ 
    "_id" : "prd_2", 
    "details" : [
        {
            "_id" : 3, 
            "product_id" : "prd_2", 
            "product_name" : "product two", 
            "sell_price" : 7, 
            "purchase_price" : 5, 
            "country" : "china"
        }, 
         {
            "_id" : 4, 
            "product_id" : "prd_2", 
            "product_name" : "product two", 
            "sell_price" : 10, 
            "purchase_price" : 12, 
            "country" : "japan"
        },   
    ]
}

次のクエリを作成しましたが、必要な結果が得られません。すべてのjsonオブジェクトを1列だけにしたいからです。必要なクエリを作成するにはどうすればよいですか? 可能です?

select product_id,
       json_agg(obj) as details
  from (
    select product_id, json_build_object(
           '_id', _id,
           'product_id', product_id,
           'product_name', product_name,
           'sell_price', sell_price,
           'purchase_price', purchase_price,
           'country', country
         ) as obj
  from products p) tmp
group by product_id;
4

1 に答える 1