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

在Google BigQuery中获取客户新增保单的最近历史投保日期

解决方案:用BigQuery窗口函数LAG()获取客户上一次投保日期

要实现你想要的结果,BigQuery的**窗口函数LAG()**是完美的选择——它能在分组排序的数据集里,轻松获取当前行的前一行指定字段的值。

完整查询代码

SELECT 
  INDVDL_ID, 
  POLICY_ID, 
  CNV_DT,
  -- 按客户分组,按投保日期排序,获取上一条记录的CNV_DT
  LAG(CNV_DT) OVER (PARTITION BY INDVDL_ID ORDER BY CNV_DT) AS PRIOR_CNV_DT
FROM `Policy_table.TP_Policies.policy_20191023`

代码解释

  • PARTITION BY INDVDL_ID:把数据按客户ID分组,确保我们只在同一个客户的保单范围内查找历史投保日期。
  • ORDER BY CNV_DT:在每个客户的分组内,按投保日期从小到大排序,这样LAG()就能准确拿到该客户上一份保单的日期。
  • LAG(CNV_DT):获取当前行的前一行的CNV_DT值,如果是客户的第一份保单(分组内的第一行),这个值会返回NULL,对应你期望结果里的空单元格。

执行结果

执行上述查询后,你会得到和预期完全一致的结果(注:修正了原数据中2008-04-31的日期错误,4月没有31日):

INDVDL_IDPOLICY_IDCNV_DTPRIOR_CNV_DT
112008-01-01NULL
122008-04-302008-01-01
132008-12-232008-04-30
342009-08-19NULL
252010-06-12NULL
262011-11-122010-06-12

内容的提问来源于stack exchange,提问作者Rafał Manda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:26:12