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

如何在SQL中获取每个ID首次出现type='Y'的日期并填充至后续行

如何获取每个ID首次出现指定类型的日期并填充到所有行?

需求:获取每个ID的type列首次出现'Y'的日期,将该日期作为Start字段填充到对应ID的所有行中。

原始数据

id type date
1  Y    2022-01-01
1  Y    2022-01-09
1  X    2022-01-12
2  Y    2022-01-08
2  X    2022-01-09
2  X    2022-01-12

期望结果

id type date        Start
1  Y    2022-01-01  2022-01-01
1  Y    2022-01-09  2022-01-01
1  X    2022-01-12  2022-01-01
2  Y    2022-01-08  2022-01-08
2  X    2022-01-09  2022-01-08
2  X    2022-01-12  2022-01-08

解决方案

无需手动遍历数据,使用SQL窗口函数即可高效实现:

SELECT
    id,
    type,
    date,
    -- 按ID分组,筛选出type为Y的日期并取最小值(首次出现的日期),填充到所有行
    MIN(CASE WHEN type = 'Y' THEN date END) OVER (PARTITION BY id) AS Start
FROM your_table;

逻辑说明:

  • CASE WHEN type = 'Y' THEN date END 仅保留当前ID下type为Y的日期,其余行返回NULL
  • MIN(...) OVER (PARTITION BY id) 按ID分组,取分组内的最小日期(即首次出现Y的日期),并将该值同步到当前ID的所有行中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:12:40