帮我看下这个逻辑能不能实现上面的情景:select d1.sk_date as gmyjrq,d2.sk_date as gmdqrq from dw.dim_date d1 inner join dw.dim_date d2 on d1.workday_no +60 = d2.workday_no and d1.workday_flag = d2.workday_flag where d2.workday_flag = 1;其中dw.dim_date是日期维度表,包含字段工作日标记workday_flag和workday_no工作日序号
时间: 2024-03-29 14:37:32 浏览: 101
date_select.rar_dateSelect
根据你提供的 SQL 语句,可以看出该语句是通过 inner join 连接两个日期维度表,其中 d1 表示起始日期维度,d2 表示结束日期维度。连接条件是 d1 的工作日序号加上 60 等于 d2 的工作日序号,并且两个日期维度的工作日标记都为 1,即是工作日。
因此,该 SQL 语句可以实现计算2021年8月5号往后推60个工作日的日期,并且自动跳过周末和节假日,只计算工作日。同时,该语句不需要手动指定节假日,而是通过日期维度表中的工作日标记和工作日序号进行计算,更加灵活方便。
需要注意的是,该语句的计算结果可能会受到日期维度表的数据范围和精度的影响,因此需要对日期维度表的数据进行检查和确认。另外,该语句只能计算从起始日期开始往后推60个工作日的日期,如果需要计算其他日期范围的工作日,需要修改对应的连接条件和查询条件。
阅读全文