sql - 按组从递归事件中获取第一个日期
问题描述
我有下表
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
解决方案
我们可以尝试将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;
演示
推荐阅读
- powershell - 在PowerShell中建立域和工作组计算机之间的远程连接
- typescript - 打字稿:更新一个类属性会自动导致另一个更新
- python-3.x - Python内存相关和时间消耗相关
- c# - .NET Core 2.1 上的 AWS Secrets Manager GetSecretValueAsync 上的套接字异常
- python - 如何在 Flask 中使用带有“start_background_task”的块功能?
- java - 上传Pdf文件未在android中转换为base64
- java - SimpleJdbcRespository 实例化的我的存储库接口如何以及在哪里?
- c# - 通过从多表构建的 SQL 在 GridView 上显示数据
- javascript - 滚动时更改菜单链接颜色时出现问题
- php - 如何解决 PDO Drivers 没有价值,但 SQLite3 已经安装