sql - 在当前组旁边的特定组中查找日期,避免不需要的组
问题描述
假设名为 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)
... ... ...
感谢你的帮助
解决方案
您可以使用子查询来实现这一点:
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;
推荐阅读
- arrays - 字母矩阵中最长的连续路径
- html - 导航栏上方的 div 看起来不像预期的那样
- mysql - 需要加快 WHERE NOT EXISTS 查询
- javascript - D3.csv 读入 promise
- jquery - 如果元素的子元素为空,则将类添加到该元素的另一个子元素
- azure-functions - Cosmos DB changefeed 突然没有触发 Azure Function 触发器
- java - Avro 无法使用更新的架构反序列化消息
- javascript - 科尔多瓦 - 安卓。将文件写入普通用户可访问的目录
- java - 如何使用 IntStream 对 int 数组的特定索引数求和?
- jenkins - Jenkinsfile 访问 aws 凭据