2016-05-25 2 views
1

У меня есть таблица с колонками «Sequence-ID», «Event-ID», «Значение»Выберите несколько строк в одну строку

Чтобы одна последовательность принадлежит до 5 событий, и каждое событие имеет одно значение например:

|Sequence-ID | Event-ID | Value | 
|------------|----------|-------| 
|1   |   1|  7| 
|1   |   2|  2| 
|1   |   3|  5| 
|1   |   4|  9| 
|1   |   5|  12| 
|2   |   1|  15| 
|2   |   2|  8| 
|2   |   3|  10| 
|2   |   4|  21| 
|2   |   5|  17| 

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

|Sequence-ID |Value  | 
|------------|-------------| 
|1   |7;2;5;9;12 | 
|2   |15;8;10;21;17| 

ответ

3

Использование STRING_AGG (col1)

select Sequence-ID , STRING_AGG(Value , ';') AS newValue 
    from table 
    GROUP BY Sequence-ID; 
+0

Спасибо, это работает хорошо – Matthias

0

Вы можете сделать это с помощью функции STRING_AGG, вот SQL-запрос:

SELECT ID, STRING_AGG(Value, ';') AS Names 
FROM TAB 
GROUP BY Sequence-ID; 
0

Вы можете сделать так:

SELECT Sequence-ID, string_agg(Value::text, ';'::text) from table group by Sequence-ID