Как получить значение столбца с настраиваемым массивом в Postgresql? - PullRequest
0 голосов
/ 21 марта 2020

У меня есть результат запроса, как показано ниже в таблице c_order для c_order_id столбца.

c_order_id
----------
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
....
....
....

Мне нужен запрос для результата ниже.

c_order_id
----------
1001,1002,1003,
1004,1005,1006,
1007,1008,1009,
1010,....,....

или

c_order_id
-----------
1001,1002,1003,1004,
1005,1006,1007,1008,
1009,1010,....,....

Я имею дело с array_to_string(array_agg(c_order_id), e'\n'), где я получаю результат массива, но в каждом значении массива в каждой новой строке. Здесь я не могу настроить значение массива с новой строкой.

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Есть два уровня агрегации:

select string_agg(col_3, '\n')
from (select string_agg(col, ',') as col_3
      from (select t.*,
                    row_number() over (order by col) - 1 as seqnum
            from t
           ) t
      group by floor(seqnum / 3)
     ) t;
0 голосов
/ 21 марта 2020

Спасибо, Гордон Линофф. Но нужно немного исправить

select string_agg(col_3, e'\n') c_order_id
from (select string_agg(c_order_id::character varying, ',') as col_3
      from (select t.c_order_id,
                    row_number() over (order by c_order_id) - 1 as seqnum
            from c_order t
           ) t
      group by floor(seqnum / 4)
     ) c_order ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...