SQL使用场景问题:
现在有表1和表2,如何通过sql进行关联生成表3。比如表2中的【2023-01-02】这条数据,因为比2023-01-01大且比2023-01-03小,所以落在表1的【小类2】区间,所以生成第13行,标红的字段都是动态计算得出的。如果将这种规则使用sql落地?

SQL使用场景问题:
现在有表1和表2,如何通过sql进行关联生成表3。比如表2中的【2023-01-02】这条数据,因为比2023-01-01大且比2023-01-03小,所以落在表1的【小类2】区间,所以生成第13行,标红的字段都是动态计算得出的。如果将这种规则使用sql落地?

1、MySQL5.7,可使用变量实现
SELECT * FROM t_test04;

SELECT * FROM t_test05;

实现SQL:
SELECT t1.大类, t1.小类, t1.结束时间, t2.扫描日期, t2.问题数
FROM ( SELECT 大类, 小类, 结束时间, @rq 开始时间, @rq := date_add( 结束时间, INTERVAL 1 DAY )
FROM t_test04 a, ( SELECT @rq := CAST( '1970-01-01' AS date ) ) b
ORDER BY 大类, 小类, 结束时间 ) t1 LEFT JOIN t_test05 t2 ON t1.大类 = t2.大类 AND t2.扫描日期 BETWEEN t1.开始时间 AND t1.结束时间
结果:
