我有一张客户记录表,其中每个客户可以有多个记录,如果他们的旧记录已经关闭(他们只能有一个“实时”记录)。
每条记录都有一个created
日期和一个closed
日期(如果已经关闭)。
源表:
客户 ID | 记录 ID | 记录状态 | 创建日期 | 结束日期 |
---|---|---|---|---|
1000000 | WTLZSMV3RQ | 居住 | 2025/02/15 10:36:26 | |
1000001 | I8R6FPCOEH | 关闭 | 20/09/2024 03:11:22 | 2024/12/13 06:08:54 |
1000001 | ZRPLYWBR8C | 关闭 | 2024/12/13 10:11:10 | 2025 年 7 月 3 日 09:06:25 |
1000001 | 9HJT89GNJ3 | 居住 | 2025 年 7 月 3 日 13:08:42 | |
1000002 | ER5JF7TZ0Z | 居住 | 2024 年 7 月 22 日 22:05:17 | |
1000003 | 少女前线 | 关闭 | 2024 年 7 月 3 日 13:04:33 | 2024 年 3 月 12 日 08:34:56 |
1000003 | VDNI7UWAUX | 居住 | 2024 年 3 月 12 日 22:19:39 |
我想要一个可以返回带有新列的表的 SQL 语句old_record_id
。
这将用该客户的上一条记录的 填充。“上一条记录”是与该记录record_id
最接近的记录。如果没有之前的记录,则应为空。created_date
created_date
我想要从该 SQL 查询中获得的结果:
客户 ID | 记录 ID | 记录状态 | 创建日期 | 结束日期 | 旧记录 ID |
---|---|---|---|---|---|
1000000 | WTLZSMV3RQ | 居住 | 2025/02/15 10:36:26 | ||
1000001 | I8R6FPCOEH | 关闭 | 20/09/2024 03:11:22 | 2024/12/13 06:08:54 | |
1000001 | ZRPLYWBR8C | 关闭 | 2024/12/13 10:11:10 | 2025 年 7 月 3 日 09:06:25 | I8R6FPCOEH |
1000001 | 9HJT89GNJ3 | 居住 | 2025 年 7 月 3 日 13:08:42 | ZRPLYWBR8C | |
1000002 | ER5JF7TZ0Z | 居住 | 2024 年 7 月 22 日 22:05:17 | ||
1000003 | 少女前线 | 关闭 | 2024 年 7 月 3 日 13:04:33 | 2024 年 3 月 12 日 08:34:56 | |
1000003 | VDNI7UWAUX | 居住 | 2024 年 3 月 12 日 22:19:39 | 少女前线 |
LAG 可以解决这个问题(如评论中所述)。以下是片段:
请注意:这会产生与您得到的结果略有不同的结果,因为对于 ID = 1000003,旧 ID 的创建日期(07/03/2025 13:04:33)远早于关闭日期(03/12/2024 22:19:39)。