Я использую postgreSQL 11 и ищу способ выбора и сортировки значений из столбца «деньги, обаяние, удача, остроумие, здоровье» и сгруппировать их под primaryAttr ( L & XL) или secondAttr (M) в соответствии с его значением.
Вот пример таблицы: [product]
| **id** | price | money | charm | luck | wit | health |
|--------+----------+---------+--------+--------+-------+--------|
| 158001 | 1500 | M | XL | L | M | M |
| 158002 | 2000 | L | M | M | XL | L |
, и я хотел бы получить следующий результат: [product]
| id | price | primary_attr | secondary_attr |
|-----------+-----------+-----------------------------------------------+-----------------------------------------------|
| 158001 | 1500 | {"luck": "L", "charm": "XL"} | {"wit": "M", "money": "M", "health": "M"} |
| 158002 | 2000 | {"wit": "XL", "money": "L", "health": "L"} | {"luck": "M", "charm": "M"} |
JSON результат:
{
"id":"158001",
"price":"1500",
"primaryAttr": {
"charm": "XL",
"luck": "L"
},
"secondaryAttr": {
"money": "M",
"wit": "M",
"health": "M"
}
},
{
"id":"158002",
"price":"2000",
"primaryAttr": {
"money": "L",
"wit": "XL",
"health": "L"
},
"secondaryAttr":{
"charm": "M",
"luck": "M"
}
}
Я искал решение, но пока не смог найти ничего подобного. Я пытаюсь собрать вещи вместе и посмотреть, есть ли какое-то хорошее решение для этого. Я буду помещать любые обновления здесь, как только я добился прогресса. Кто-нибудь сделал что-нибудь подобное, что могло бы указать мне правильное направление? Спасибо за помощь и советы!
данные настройки для тестирования Я забыл добавить это (спасибо @Oto Shavadze).
create table product(id int, price numeric, money text, charm text, luck text, wit text, health text);
insert into product
values
(158001, 1500, 'M','XL','L','M','M'),
(158002, 2000, 'L','M','M','XL','L');