Sql查询生成事件序列

时间:2016-05-12 10:29:56

标签: sql postgresql

我有一个名为event的表格,格式如下。

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 个答案:

答案 0 :(得分: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;