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

如何在SQL查询中添加列获取客户上一条记录的record_id

编写SQL新增客户上一条记录ID字段

源表结构与数据

customer_idrecord_idrecord_statuscreated_dateclosed_date
1000000WTLZSMV3RQLive15/02/2025 10:36:26
1000001I8R6FPCOEHClosed20/09/2024 03:11:2213/12/2024 06:08:54
1000001ZRPLYWBR8CClosed13/12/2024 10:11:1007/03/2025 09:06:25
10000019HJT89GNJ3Live07/03/2025 13:08:42
1000002ER5JF7TZ0ZLive22/07/2024 22:05:17
10000032SNSDMLXZ1Closed07/03/2024 13:04:3303/12/2024 08:34:56
1000003VDNI7UWAUXLive03/12/2024 22:19:39

期望查询结果

返回原表所有字段,并新增old_record_id列,填充对应客户的上一条记录ID(上一条记录指创建日期最接近当前记录创建日期的前序记录),无前置记录则为NULL:

customer_idrecord_idrecord_statuscreated_dateclosed_dateold_record_id
1000000WTLZSMV3RQLive15/02/2025 10:36:26
1000001I8R6FPCOEHClosed20/09/2024 03:11:2213/12/2024 06:08:54
1000001ZRPLYWBR8CClosed13/12/2024 10:11:1007/03/2025 09:06:25I8R6FPCOEH
10000019HJT89GNJ3Live07/03/2025 13:08:42ZRPLYWBR8C
1000002ER5JF7TZ0ZLive22/07/2024 22:05:17
10000032SNSDMLXZ1Closed07/03/2024 13:04:3303/12/2024 08:34:56
1000003VDNI7UWAUXLive03/12/2024 22:19:392SNSDMLXZ1

解决方案SQL语句

使用窗口函数LAG(),按客户ID分组、创建日期排序,即可获取每条记录的上一条记录ID:

SELECT 
    customer_id,
    record_id,
    record_status,
    created_date,
    closed_date,
    LAG(record_id) OVER (PARTITION BY customer_id ORDER BY created_date) AS old_record_id
FROM 
    your_table_name;

说明

  • PARTITION BY customer_id:按客户ID分组,确保仅在同一客户的记录范围内查找上一条记录
  • ORDER BY created_date:按创建日期排序,保证取到的是创建时间最接近当前记录的前序记录
  • LAG(record_id):返回分组内当前行的上一行的record_id,分组内第一行则返回NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:55:14