2014-12-26 6 views
0

Как объединить несколько строк в таблице в одну строку с некоторыми пользовательскими символами?Complex Select in PostgreSQL

для описания моей проблемы я покажу пример таблицы и данные,

create table bar ( 
     foo text 
    ); 

insert into bar values ('ABC'), 
         ('DEF'), 
         ('UVW'), 
         ('XYZ'); 

и мне нужно, чтобы получить результат, которые выглядят, как показано ниже

1_ABC, 2_DEF, 3_UVW, 4_XYZ 

ответ

1

Вы можете добиться желаемого результата с помощь row_number() и string_agg Функции в PostgreSQL

В соответствии с документом

row_number(): номер текущей строки в пределах его раздела, считая от 1

string_agg (выражение, разделитель): входные значения объединяются в строки, разделенные разделителем

select string_agg(col,', ') result 
from (
     select row_number() over() ||'_'|| foo col 
     from bar 
    ) t