Сгенерировать вывод в виде массива или json agg в PostgreSQL - PullRequest
0 голосов
/ 04 августа 2020

У меня есть таблица, и мне нужно сгенерировать конкретный c вывод в виде списка массивов. Я пробовал использовать комбинацию json_agg, array_agg, row_to_json почти всех функций agg_functions и json_building, но не смог сгенерировать вывод по мере необходимости.

Если это невозможно , Я тоже могу работать с простой структурой json, но, прежде чем сдаться, хочу попробовать.

Структура таблицы

create table sample_table
( 
  x_labl character varying,
  x_val1 character varying,
  x_val2 character varying,
  y_labl character varying,
  y_val1 character varying,
  y_val2 character varying
 );

Sample_Data

образец данных

Хотите создать вывод, например, как показано ниже:

"chartData" : [
    ["lablX", 1, 2], ["lablY",  10, 20]
]

1 Ответ

1 голос
/ 04 августа 2020

Это то, что вы хотите?

select array[
    array[x_labl, x_val1, x_val2], 
    array[y_labl, y_val1, y_val2 ]
] as chartData
from sample_table

Это создает набор результатов только с одним столбцом с именем chartData и таким количеством строк, сколько имеется в таблице. Каждое значение представляет собой многоуровневый массив, который соответствует заданному вами spe c.

Если вместо этого вам нужен объект json:

select json_build_object(
    'chartData',
    jsonb_build_array(
        jsonb_build_array(x_labl, x_val1, x_val2),
        jsonb_build_array(y_labl, y_val1, y_val2)
    )
) as js
from sample_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...