基于SQL(Oracle)中预定义的日期范围的组记录

Maeaex1

是否可以基于非连续日期start_date的行和end_date上一行的预定义日期范围差异(例如30天)对记录进行分组我想参加各组min(start_date)max(end_date)在Oracle中尝试了leadandlag和partition by函数,但无法提出正确的解决方案。与我的问题相关的相关但未答复的帖子可以在这里找到

例如

ROW_NUM        PROJECT_ID       START_DATE       END_DATE          
1              1                2016-01-14       2016-08-15
2              1                2016-08-16       2016-09-10     --- Date diff Row 1&2 = 1 Day
3              1                2016-11-15       2017-01-10     --- Date diff Row 2&3  = 66 Days
4              1                2016-01-17       2017-04-10     --- Date diff Row 3&4 = 7 Days
5              2                2018-04-28       2018-06-01     --- Other Project
6              2                2019-02-01       2019-04-05     --- Diff > 30 Days
7              2                2019-04-08       2019-07-28     --- Diff 3 Days

预期结果:

ROW_NUM        PROJECT_ID       START_DATE       END_DATE          
1              1                2016-01-14       2016-09-10
3              1                2016-11-15       2017-04-10     
5              2                2018-04-28       2018-06-01   
6              2                2019-02-01       2019-07-28

     
戈登·利诺夫

使用lag()和累计和定义组从何处开始。然后合计:

select project_id, min(start_date), max(end_date)
from (select t.*,
             sum(case when prev_end_date > start_date - interval '30' day then 0 else 1 end) over
                  (partition by project_id order by start_date) as grp
      from (select t.*,
                   lag(end_date) over (partition by project_id order by start_date) as prev_end_date
            from t
           ) t
     ) t
group by project_id, grp;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Oracle SQL:如何通过具有预定义贡献的每个组获取随机记录

来自分类Dev

Mongo日期汇总预定义范围

来自分类Dev

在SQL中查找日期范围重叠的记录

来自分类Dev

基于连续匹配记录的SQL记录中的标签组

来自分类Dev

Oracle SQL:如何从组中查找记录

来自分类Dev

在Oracle SQL中根据重叠的日期范围连接客户端记录

来自分类Dev

预定义特定范围以记录单元数据变化

来自分类Dev

预定义特定范围以记录单元数据的变化

来自分类Dev

列中的sql日期范围并按组计数

来自分类Dev

在SQL中合并具有重叠日期范围的记录

来自分类Dev

根据T-SQL中的日期范围运行记录总数

来自分类Dev

在SQL中合并具有重叠日期范围的记录

来自分类Dev

如何在Oracle SQL中检索相同日期的组中的第一条记录和最后一条记录

来自分类Dev

从记录组中检索最大日期记录

来自分类Dev

基于重叠范围的SQL组行

来自分类Dev

SQL - 基于动态日期范围的动态总和

来自分类Dev

如何在SQL中基于当前日期获取上周日期范围?

来自分类Dev

SQL DELETE记录组(基于相反的组为空)

来自分类Dev

确定MySQL中预定义班次内的时间范围

来自分类Dev

HTML输入类型范围中的预定义步骤

来自分类Dev

如何从结构中的预定义“范围”访问切片?

来自分类Dev

预定义的用户组

来自分类Dev

基于 R 中的日期范围创建列

来自分类Dev

Oracle SQL-组和明细记录

来自分类Dev

Oracle Sql基于字段“创建”记录

来自分类Dev

在Android中基于日期从sqlite删除记录

来自分类Dev

Oracle SQL中的连续和非连续日期范围:查找最早的日期

来自分类Dev

Moment()与预定义的Moment()日期

来自分类Dev

Oracle SQL内部联接日期范围

Related 相关文章

热门标签

归档