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

部分分组存在时如何将空GROUP_ID记录匹配至对应日期范围分组

解决方案

核心逻辑

你原来的逻辑问题出在直接用当前行的DATE_FROM、DATE_TO做判断,而空GROUP_ID的行这两个字段本身就是空值,当然没法匹配。正确的做法是先把所有已有的有效分组规则(即GROUP_ID非空的行)提取成独立的时间范围维度,再用所有待处理行去匹配这个维度即可。

具体实现SQL

-- 第一步:提取所有有效分组的时间范围规则
WITH valid_group_rules AS (
    SELECT
        ID,
        GROUP_ID,
        DATE_FROM,
        DATE_TO
    FROM your_table_name -- 替换为你的实际表名
    WHERE GROUP_ID IS NOT NULL
)
-- 第二步:关联匹配填充GROUP_ID
SELECT
    t.ID,
    COALESCE(t.GROUP_ID, g.GROUP_ID) AS GROUP_ID,
    t.DATE_NEW_FROM,
    t.DATE_NEW_TO,
    t.NEW_ID
FROM your_table_name t
LEFT JOIN valid_group_rules g
    ON t.ID = g.ID
    AND t.DATE_NEW_FROM BETWEEN g.DATE_FROM AND g.DATE_TO
-- 可根据需要添加排序规则
ORDER BY t.ID, t.DATE_NEW_FROM;

注意事项

  • 如果业务中存在单个DATE_NEW_FROM落在同一个ID的多个分组时间范围内的情况,可以再加一层排序取数逻辑,比如用ROW_NUMBER()窗口函数按你需要的优先级(比如时间范围长度、GROUP_ID大小等)排序后取第一条即可,避免匹配出多条重复记录。
  • 如果希望用DATE_NEW_TO也参与范围校验,只需要把关联条件调整为AND t.DATE_NEW_FROM <= g.DATE_TO AND t.DATE_NEW_TO >= g.DATE_FROM,判断两个时间段是否存在交集即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:54:05