您好,并提前感谢您的帮助,我在Oracle SQL环境中工作。
我的问题在这张照片中说明:
输入:
我有一个属于客户的日期间隔,从未超出一个月的范围。我需要连接第一个间隔结束是一个月末的间隔,下一个间隔从下个月的第一天开始(这是他们连接的唯一方式)。
在&strong;" 之间的"天已经很明显,当新的时间间隔开始时,数字大于1并且当前行属于间隔有1。
一些细节:
输出:
理想输出的具体示例在附图中。简单 - 我想要在整个时间间隔内指定每一行,其中包括行间隔,开始和结束。
Data:
ID Start date End date Last start date Last end date Days between
12 21.03.2016 31.03.2016 1
12 01.04.2016 04.04.2016 21.03.2016 31.03.2016 1
12 28.04.2016 30.04.2016 01.04.2016 04.04.2016 24
12 01.05.2016 20.05.2016 28.04.2016 30.04.2016 1
12 06.06.2016 30.06.2016 01.05.2016 20.05.2016 17
12 01.07.2016 13.07.2016 06.06.2016 30.06.2016 1
答案 0 :(得分:0)
再次感谢Tim-biegeleisen的问题名称,从那里它很容易!我将来一定会记住这个解决方案。
我通过两个简单的步骤解决了这个问题。
首先对那些间隔使用虚拟变量,其中存在间隙:
case when days_between=1 then 0 else 1 end as gap
然后我们根据间隙分配间隔
sum(gap) over (partition by ID order by start_date)
由此我们只按ID和新变量分组,我们就完成了。