2016-05-12 2 views
1

У меня есть таблица под названием event в нижнем формате.Запрос Sql для генерации последовательности событий

user_id event_name sequence_number 
    1  open   1 
    1  export  3 
    1  import  2 
    1  close  5 
    1  publish  4 
    2  close  3 
    2  open   1 
    2  import  2 

Здесь sequence_number сообщает, в каком порядке используется это событие. например событие с sequence_number 2 используется перед событием с sequence_number 1 для этого конкретного пользователя.

С помощью приведенной выше таблицы event, я должен создать другую таблицу под названием event_sequence, которая покажет последовательность событий для каждого пользователя. наш выход таблица будет выглядеть следующим образом:

user_id event_order 
    1  open->import->export->publish->close 
    2  open->import->close 

Я использую PostgreSQL.

Любая помощь будет высоко оценена. Заранее спасибо.

ответ

1

Вы можете использовать string_agg():

select e.user_id, 
     string_agg(e.event_name, '->' order by sequence_number) as events 
from event e 
group by e.user_id; 
+0

Благодаря человек, которого вы спасли меня. Я должен тебе пиво. Еще раз спасибо. –

Смежные вопросы