SQL - 选择使用日期取消的进程

时间:2017-07-24 10:25:52

标签: sql oracle

我有一个表,显示进程的状态(特别是我搜索已取消的进程),没有排序。我想再次选择他们恢复的所有人。我想这样做"在取消流程中保留特定日期并检查取消状态后是否还有其他状态。

示例:

[id] [moddate] [status]
 1 01/01/17开始了  1 02/01/17等待签字
 1 04/01/17取消
  1 09/01/17交付文件
 1 11/01/17 complited
< - 我想选择这些状态,(已取消,然后以某种方式恢复)

我在开始时得到了这样的东西:

SELECT * FROM DATABASE
WHERE APPLICATIONSTATUSSYMBOL LIKE 'CANCELED%'
AND  APPLICATIONDATE BETWEEN '17/01/01' AND '17/07/24';

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用窗口函数:

select d.*
from (select d.*,
             max(case when status = 'canceled' then applicationdate end) over (partition by id) as canceldate
      from database
      where applicationdate between date '2017-01-01' and date '2017-07-24'
     ) d
where applicationdate > canceldate;