首页 > 解决方案 > 在当前组旁边的特定组中查找日期,避免不需要的组

问题描述

假设名为 t1 的表:

create table t1(
    dates date,
    groups number
);

insert into t1 values('01.03.2020', 1);
insert into t1 values('02.03.2020', 2);
insert into t1 values('10.03.2020', 3);
insert into t1 values('01.04.2020', 10);
insert into t1 values('02.04.2020', 20);
insert into t1 values('10.04.2020', 3);

DATES       GROUPS
01.03.2020  1
02.03.2020  2
10.03.2020  3
01.04.2020  10
02.04.2020  20
10.04.2020  3

我需要添加列,该列将存储 DATES 列中的值,其中 GROUP 列值等于 3,并且在时间上应该是最近的 3d 组的日期。

期望的结果:

DATES       GROUPS  DATE_OF_NEXT_3D_GROUP
01.03.2020  1       10.03.2020
02.03.2020  2       10.03.2020
10.03.2020  3       NULL(or could be 10.04.2020 from next 3d group)
01.04.2020  10      10.04.2020
02.04.2020  20      10.04.2020
10.04.2020  3       NULL(or date from next 3d group)
...         ...     ...

感谢你的帮助

标签: sqloracle

解决方案


您可以使用子查询来实现这一点:

select dates,
       groups,
       (select min(dates)
          from t1 b
         where b.groups = 3
           and b.dates > a.dates) as next_g3_date
  from t1 a;

推荐阅读