首页 > 解决方案 > 按组从递归事件中获取第一个日期

问题描述

我有下表

ID  Date    Event
1   1990-01-01  1
1   1990-01-02  0
1   1990-01-03  1
2   1990-02-01  0
2   1990-02-02  1
2   1990-02-03  1

我想创建一个新列,它指示事件列为 1 的日期,例如:

ID  Date    Event   Fist Event date
1   1990-01-01  1   1990-01-01
1   1990-01-02  0   1990-01-01
1   1990-01-03  1   1990-01-01
2   1990-02-01  0   1990-02-02
2   1990-02-02  1   1990-02-02
2   1990-02-03  1   1990-02-02

标签: sqlsql-serverdatepartitioning

解决方案


我们可以尝试将MIN这里用作解析函数:

SELECT
    ID,
    Date,
    Event,
    MIN(CASE WHEN Event = 1 THEN Date END) OVER (PARTITION BY ID) AS First_Event_Date
FROM yourTable
ORDER BY
    ID,
    Date;

在此处输入图像描述

演示


推荐阅读