我将大部分应用程序细节都放在一边,让事情变得简单。 这是我的开始以及我需要去的地方。例如,我已经使用LEAD / LAG函数和内部SQL尝试了很多很多东西,但是如果没有编写过程代码,我似乎没有达到目的。这是问题所在:
鉴于此:
with some_data as (select 1 seqnc, to_date('12-06-2018','dd-mm-yyyy') date_deb, 2 qte_min from dual union
select 1 seqnc, to_date('13-06-2018','dd-mm-yyyy'), 2 from dual union
select 1 seqnc, to_date('14-06-2018','dd-mm-yyyy'), 2 from dual union
select 1 seqnc, to_date('15-06-2018','dd-mm-yyyy'), 4 from dual union
select 1 seqnc, to_date('16-06-2018','dd-mm-yyyy'), 4 from dual union
select 1 seqnc, to_date('17-06-2018','dd-mm-yyyy'), 2 from dual union
select 1 seqnc, to_date('18-06-2018','dd-mm-yyyy'), 2 from dual union
select 1 seqnc, to_date('19-06-2018','dd-mm-yyyy'), 2 from dual union
select 1 seqnc, to_date('20-06-2018','dd-mm-yyyy'), 2 from dual)
select * from some_data;
日期总是连续的。我需要得到qte_min的相同值,这些值按连续日期分组(不是所有相同值的组)。 我需要最终得到类似的东西:
date_deb qte_min nbre_jrs
12-06-2018 2 3
15-06-2018 4 2
17-06-2018 2 4
感谢您的帮助。
答案 0 :(得分:0)
您可以使用不同的行号和日期来定义组:
select seqnc, min(date_db), max(date_db), min(qte_min), count(*)
from (select sd.*,
row_number() over (partition by seqnc order be date_db) as seqnum_d
from some_data sd
) sd
group by seqnc, (date_db - seqnum_d)