年芳单八 2023-05-12 10:16 采纳率: 33.3%
浏览 62
已结题

SQL使用场景问题,久旱盼甘霖

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

img

  • 写回答

3条回答 默认 最新

  • leaf_cq 2023-05-12 11:00
    关注

    1、MySQL5.7,可使用变量实现

    SELECT * FROM t_test04;
    

    img

    SELECT * FROM t_test05;
    

    img

    实现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.结束时间
    

    结果:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月20日
  • 已采纳回答 5月12日
  • 修改了问题 5月12日
  • 创建了问题 5月12日