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

如何根据is_active状态从creation_time提取start_date与end_date

解决方案:根据is_active状态生成start_date和end_date

针对你的需求,这里提供一个基于窗口函数的SQL查询方案,可以直接得到你期望的结果:

SELECT 
    id,
    user_id,
    name,
    leader_name,
    is_active,
    creation_time AS start_date,
    CASE 
        WHEN is_active = 1 THEN CURRENT_DATE()
        ELSE LEAD(creation_time) OVER (PARTITION BY user_id ORDER BY creation_time)
    END AS end_date,
    creation_time
FROM your_table_name
ORDER BY creation_time;

逻辑说明:

  • start_date:直接复用当前记录的creation_time,完全匹配示例中的结果规则
  • end_date:
    • 对于is_active=1的活跃记录,用CURRENT_DATE()填充结束日期
    • 对于非活跃记录(is_active=0),使用LEAD()窗口函数,按user_id分组、creation_time升序排序,获取同用户下下一条记录的creation_time作为当前记录的结束日期
  • 最后按creation_time排序,保证结果顺序和示例一致

注意事项:

  • 确保你的数据库支持窗口函数(比如MySQL 8.0+、PostgreSQL、SQL Server 2012+等)
  • 如果是MySQL 5.x这类不支持窗口函数的版本,可以用关联查询实现,但窗口函数的方案更简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:36:44