Использование postgresql to_json(), преобразование в столбцы как ключ-значение json

Я пытаюсь выполнить следующее в postgresql

Моя структура таблицы

postgres=# select * from t_test;
 var1 | var2 | var3 
------+------+------
    1 | A    | v1
    1 | B    | v2
    2 | A    | u1

Я хочу, чтобы вывод был сгруппирован по var1. var2 и var3 должны стать значениями ключа json. Что-то вроде этого:

 var1 |  result
------+------------
    1 | { A: v1, B: v2 }
    2 | { A: u1 }

Я не мог четко понять функцию to_json из документации. Может ли кто-нибудь помочь?


person Mandeep Singh    schedule 22.07.2014    source источник
comment
SQLFiddle: sqlfiddle.com/#!15/eb3cd . Пожалуйста, предоставьте данные как CREATE TABLE и INSERT в будущем.   -  person Craig Ringer    schedule 22.07.2014
comment
Выглядит раздражающе сложно с поддержкой json в 9.3, что... не совсем исчерпывающе. Для этого вам действительно нужен json_object_agg 9.4.   -  person Craig Ringer    schedule 22.07.2014


Ответы (2)


Говорят, что select to_json(table_name.*) может сработать

person catamphetamine    schedule 08.11.2016

В 9.3 (как помечено) выполните агрегацию строк:

select v1, format('{%s}',string_agg(format('"%s":"%s"',v2,v3), ','))::json
from t
group by v1
;
 v1 |       format        
----+---------------------
  1 | {"A":"v1","B":"v2"}
  2 | {"A":"u1"}
person Clodoaldo Neto    schedule 08.11.2016