You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL数据操作:基于起止周范围批量插入多行数据

解决方案:拆分周度合同到单个有效周记录

你可以通过**交叉连接(CROSS JOIN)**结合筛选条件实现需求:先让Load_Week的每条记录和Formatted_Week的所有周记录配对,再筛选出落在合同有效周范围内的结果。需要注意的是,你的数据里部分字段值带有末尾空格,得用TRIM()函数清理后再做比较,避免空格导致的匹配错误。

实现SQL

如果只想查询结果,使用以下语句:

SELECT
    lw.LOAD_ID,
    lw.Amount,
    fw.formatted_week
FROM Load_Week lw
CROSS JOIN Formatted_Week fw
WHERE
    TRIM(fw.formatted_week) BETWEEN TRIM(lw.Valid_from) AND TRIM(lw.Valid_to)
ORDER BY lw.LOAD_ID, fw.formatted_week;

如果需要创建新表存储结果:

CREATE TABLE Load_Week_Expanded AS
SELECT
    lw.LOAD_ID,
    lw.Amount,
    TRIM(fw.formatted_week) AS formatted_week
FROM Load_Week lw
CROSS JOIN Formatted_Week fw
WHERE
    TRIM(fw.formatted_week) BETWEEN TRIM(lw.Valid_from) AND TRIM(lw.Valid_to)
ORDER BY lw.LOAD_ID, formatted_week;

优化建议

  • 字段类型优化:
    • Amount字段存储数值,建议改成INT或DECIMAL类型,避免字符串操作带来的问题;
    • 周格式字段(Valid_from、Valid_to、formatted_week)可考虑转换成标准周日期类型(如数据库支持的ISO_WEEK相关类型),或存储为YYYYWW格式的整数(如202244),让比较和计算更高效准确。
  • 数据清洗:
    • 插入数据时去掉末尾空格,避免后续每次查询都调用TRIM(),影响性能。
  • 性能提升:
    • 若Formatted_Week表数据量极大,可给formatted_week字段加索引,同时给Load_Week的Valid_from、Valid_to字段加索引,提升查询效率。

内容的提问来源于stack exchange,提问作者R.bitrary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:25:39