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

如何用SQL计算客户的OriginalEffectiveDate(含保障中断判断)

问题描述

数据表结构

存储客户及保单信息的大型数据表(实际日期分布于全年)结构如下:

RecordCustomerIDNamePolicyStartPolicyEndAgentStatus
112345Jane Doe2006010120081231John SmithTerm
212345Jane Doe2009010120101231Sarah PoTerm
312345Jane Doe20110101Sarah PoActive
412346Joe Dirt2013010120141231Blake LeeTerm
512346Joe Dirt20200101Blake LeeActive

原查询语句及结果

原本用于获取所有活跃账户的SQL语句:

SELECT * FROM Customers WHERE Status = 'Active'

查询结果:

RecordCustomerIDNamePolicyStartPolicyEndAgentStatus
312345Jane Doe20110101Sarah PoActive
512346Joe Dirt20200101Blake LeeActive

目标结果格式

需要生成的最终结果格式:

RecordCustomerIDNameOriginalEffectiveDateAgentStatus
312345Jane Doe20060101Sarah PoActive
512346Joe Dirt20200101Blake LeeActive

具体计算规则

计算OriginalEffectiveDate列的核心规则:

  • 若客户的保障无1个月及以上的中断,将最早的PolicyStart作为OriginalEffectiveDate;
  • 若存在中断(或多次中断),取最近一次中断后的首个保单生效日作为OriginalEffectiveDate。

示例说明:

  • Jane Doe的保障从未中断,因此OriginalEffectiveDate为20060101;
  • Joe Dirt的保障存在1个月以上的中断,最近一次中断后的首个生效日为20200101,因此取该日期。

当前难点与需求

尝试使用CASE、MIN、MAX、TOP语句均未成功,核心困境在于:

  1. 如何判断保单间是否存在“1个月及以上的中断”;
  2. 如何定位“最近一次中断后的首个日期”。

曾在线搜索解决方案但未找到类似案例,推测是搜索关键词不当。希望获得方法指引(而非直接代码),掌握解决这类问题的思路。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:10:15