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

如何拆分日期列并按ID区分最大/最小日期(单日期时Min为Null)

解决方案:根据ID的日期记录数动态调整Min列值

你可以在原有窗口函数查询的基础上,增加统计每个ID日期记录数的窗口函数,再结合CASE条件判断来实现需求:

SELECT 
    id, 
    name, 
    MAX(date) OVER (PARTITION BY id) AS max_date,
    CASE 
        WHEN COUNT(*) OVER (PARTITION BY id) = 1 THEN NULL
        ELSE MIN(date) OVER (PARTITION BY id) 
    END AS min_date
FROM your_table;

逻辑说明

  • COUNT(*) OVER (PARTITION BY id):统计每个ID分组下的记录总条数
  • 当记录条数为1时,min_date返回NULL;否则返回该ID对应的最小日期
  • max_date始终保留该ID的最大日期,不受记录数影响

示例验证

假设原表数据如下:

idnamedate
1张三2023-01-01
2李四2023-02-01
2李四2023-03-01
3王五2023-04-01

执行上述SQL后,输出结果为:

idnamemax_datemin_date
1张三2023-01-01NULL
2李四2023-03-012023-02-01
2李四2023-03-012023-02-01
3王五2023-04-01NULL

完全符合单日期ID的Min列为Null、多日期ID正常显示最大最小日期的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:48:46