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

DB2-SQL处理END字段null值:查询max(END)≤2021-12-31的ID对应记录

DB2 SQL查询实现方案

核心逻辑说明

  • 空值处理:使用DB2内置的COALESCE函数将END字段的null值替换为远大于阈值的'9999-12-31',只要对应id下存在未结束(END为null)的记录,计算出的最大日期就会远超2021-12-31,会被直接排除。
  • 筛选逻辑:先按id分组计算每组的最大END日期,筛选出最大值≤'2021-12-31'的合法id,再关联原表返回对应记录。

注意:如果END字段为DATE类型,建议将替换值写为DATE('9999-12-31')显式转换为日期类型,避免隐式转换报错。

方案1:返回符合条件id的所有全量记录

SELECT t.*
FROM my_date t
INNER JOIN (
    SELECT id
    FROM my_date
    GROUP BY id
    HAVING MAX(COALESCE(END, '9999-12-31')) <= '2021-12-31'
) valid_ids ON t.id = valid_ids.id

方案2:返回符合条件id的最大END对应的单条记录(与你给出的预期结果完全匹配)

SELECT t.*
FROM my_date t
INNER JOIN (
    SELECT id, MAX(COALESCE(END, '9999-12-31')) AS max_end
    FROM my_date
    GROUP BY id
    HAVING MAX(COALESCE(END, '9999-12-31')) <= '2021-12-31'
) valid_ids ON t.id = valid_ids.id 
AND COALESCE(t.END, '9999-12-31') = valid_ids.max_end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:24:04