effective_date termination_date rank
1/1/2015 1/31/2015 1
2/1/2015 2/28/2015 1
3/3/2015 3/31/2015 2
4/1/2015 4/30/2015 2
基本上当previous termination_date
和current effective_date
之间存在差距时,我需要指定一个新的排名/值并继续排名/值,直到我找到current effective_date
之间的新差距1}}和之前的termination_date
。
此外,不允许使用存储过程。请告诉我使用DB2查询实现此目的的方法
答案 0 :(得分:1)
您可以使用窗口功能。以下使用lag()
来确定连续期间的开始位置。然后累计对该标志求和以识别每个组:
select t.*, sum(IsStart) over (order by effective_date)
from (select t.*,
(case when lag(termination_date) + 1 days >= effective_date
then 0 else 1
end) as IsStart
from t
) t;