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

基于多列条件判断新增status列的SQL实现问题

实现方案

核心思路

  • 优先判断date字段是否为空,空值直接返回incomplete
  • 对日期非空的记录,按person_id分区后按日期升序生成排序序号
  • 匹配序号对应状态:序号1返回start、序号2返回ongoing、序号≥3返回complete

可直接运行的SQL代码(支持窗口函数的数据库通用)

SELECT 
    person_id,
    activity,
    combination_count,
    date,
    CASE
        WHEN date IS NULL THEN 'incomplete'
        ELSE CASE ROW_NUMBER() OVER (PARTITION BY person_id ORDER BY date ASC)
            WHEN 1 THEN 'start'
            WHEN 2 THEN 'ongoing'
            WHEN 3 THEN 'complete'
            -- 超过3次的非空记录默认返回complete,可按需调整规则
            ELSE 'complete'
        END
    END AS status
FROM 你的业务表名;

和你提供的示例结果对齐的调整方案

如果你的业务实际是按person_id + activity分组排序(和示例中的combination_count生成逻辑一致),仅需要修改窗口函数的分区规则即可:

-- 调整PARTITION BY字段即可匹配你的示例结果
ROW_NUMBER() OVER (PARTITION BY person_id, activity ORDER BY date ASC)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:48:02