为不同的状态

时间:2018-01-19 11:35:48

标签: postgresql

我有一张如下表:

app_no    |       curr_time          updt_time         status
212461248 | 2016-04-30 20:26:54 |2016-05-04 08:36:17 |  Incomplete
212461248 | 2016-04-30 20:26:54 |2016-11-18 11:17:28 |  Error
212461248 | 2016-04-30 20:26:54 |2017-01-27 02:00:40 |  Refer
212461248 | 2016-04-30 20:26:54 |2017-08-12 23:59:02 |  Declined
212461251 | 2017-06-15 01:41:13 |2017-06-22 04:02:11 |  Error
212461251 | 2017-06-15 01:41:13 |2017-10-18 01:34:09 |  Declined
212461253 | 2016-06-21 00:56:23 |2016-06-24 11:44:17 |  Incomplete
212461253 | 2016-06-21 00:56:23 |2017-09-04 18:20:06 |  Error

我想让每个应用程序从一个状态转移到另一个状态(从updt_time列)?

例如:212461248的时间从不完整转为错误,错误引用并参考拒绝。

输出应该像

status   time_taken
------  -----------
error     hh
refer     hh
declined  hh

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为你可以使用窗口函数:

我们试试这个

SELECT app_no, status, extract(epoch FROM (updt_time - lag(updt_time) OVER (PARTITION BY app_no ORDER BY updt_time))::interval) as time_taken
FROM your_table

有关窗口功能的更多信息,请访问here