比如20220101 20220102 20220103标志是2为非交易日;这三个日期的交易日是标志为1离它们最近的20220104。怎么把所有发生日期的交易日找到。
2条回答 默认 最新
关注 这个表看上去是个日历表,所以假定发生日期中间没有日期缺失
with t(发生日期,是否交易日期) as ( select date'2022-01-01',2 from dual union all select date'2022-01-02',2 from dual union all select date'2022-01-03',2 from dual union all select date'2022-01-04',1 from dual union all select date'2022-01-05',1 from dual union all select date'2022-01-06',1 from dual union all select date'2022-01-07',1 from dual union all select date'2022-01-08',2 from dual union all select date'2022-01-09',2 from dual union all select date'2022-01-10',1 from dual ) select t1.发生日期, case when 是否交易日期 = 1 then 发生日期 else max(发生日期) over(partition by d) + 1 end 交易日期 from (select t.*, sum(case 是否交易日期 when 2 then 0 else 1 end) over(order by 发生日期) d from t) t1
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 划分vlan后不通了
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数