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

基于月份和周数列生成日期并分配给WTG的SQL查询需求

解决方案

首先明确假设的表结构(若你的表结构不同,可对应调整字段名):

  • table1: 包含wtg_id(WTG唯一标识)、target_month(目标月份,格式如YYYY-MM)
  • table2: 包含week_code(月周编码,值为W1/W2/W3/W4/W5)

核心逻辑

  1. 将月周编码转换为对应日期:
    • W1 → 当月7日
    • W2 → 当月14日
    • W3 → 当月21日
    • W4 → 当月28日
    • W5 → 当月最后一天
  2. 按WTG和月周的顺序匹配分配

MySQL 实现示例

SELECT
    t1.wtg_id,
    t1.target_month,
    t2.week_code,
    -- 转换月周为对应日期
    CASE
        WHEN t2.week_code = 'W1' THEN STR_TO_DATE(CONCAT(t1.target_month, '-07'), '%Y-%m-%d')
        WHEN t2.week_code = 'W2' THEN STR_TO_DATE(CONCAT(t1.target_month, '-14'), '%Y-%m-%d')
        WHEN t2.week_code = 'W3' THEN STR_TO_DATE(CONCAT(t1.target_month, '-21'), '%Y-%m-%d')
        WHEN t2.week_code = 'W4' THEN STR_TO_DATE(CONCAT(t1.target_month, '-28'), '%Y-%m-%d')
        WHEN t2.week_code = 'W5' THEN LAST_DAY(STR_TO_DATE(t1.target_month, '%Y-%m'))
    END AS week_date
FROM
    -- 给WTG按顺序编号
    (SELECT *, ROW_NUMBER() OVER (ORDER BY wtg_id) AS wtg_seq FROM table1) t1
JOIN
    -- 给月周按顺序编号(保证W1-W5的顺序)
    (SELECT *, 
        CASE week_code
            WHEN 'W1' THEN 1
            WHEN 'W2' THEN 2
            WHEN 'W3' THEN 3
            WHEN 'W4' THEN 4
            WHEN 'W5' THEN 5
        END AS week_seq
     FROM table2
     ORDER BY week_seq) t2
-- 按顺序匹配分配;若WTG数量多于月周数,改为MOD(wtg_seq-1,5)+1实现循环分配
ON t1.wtg_seq = t2.week_seq;

其他数据库适配说明

  • PostgreSQL:
    • 替换STR_TO_DATE为TO_DATE,LAST_DAY替换为(DATE_TRUNC('month', TO_DATE(t1.target_month, 'YYYY-MM')) + INTERVAL '1 month - 1 day')::date
  • SQL Server:
    • 替换STR_TO_DATE为CONVERT(DATE, CONCAT(t1.target_month, '-07')),LAST_DAY替换为EOMONTH(CONVERT(DATE, CONCAT(t1.target_month, '-01')))

注意事项

  • 若需要循环分配(WTG数量超过5个时重复W1-W5日期),将JOIN条件改为MOD(t1.wtg_seq-1,5)+1 = t2.week_seq
  • 确保target_month格式统一,避免日期转换报错
  • 若table2中月周编码不完整,需补充完整的W1-W5记录后再关联

内容的提问来源于stack exchange,提问作者MDJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:06:02