如何基于Episode_Startdate而非当前日期计算客户年龄?
解决方案:基于Episode开始日期计算客户年龄
完全可行,只需要把原查询中用来计算当前年龄的GETDATE()替换为E.start_dt(Episode的开始日期字段)即可。
修改后的完整查询片段如下:
SELECT C.local_ur AS Local_UR, C.sw_ur AS SW_UR, CN.birth_dt as DOB, -- 替换GETDATE()为E.start_dt,计算Episode开始时的年龄 CONVERT(int, ROUND(DATEDIFF(hour, CN.birth_dt, E.start_dt) / 8766.0, 0)) AS Age_At_Episode_Start, -- 保留Episode相关字段 E.epd_id AS Episode_ID, E.start_dt AS Episode_StartDate, E.end_dt AS Episode_EndDate
关键说明:
- 原逻辑是通过出生日期到目标时间的小时差除以8766(闰年与平年的年均小时数平均值),取整得到年龄。替换为
E.start_dt后,就会计算客户在Episode启动当天的准确年龄。 - 如果
E.start_dt存在NULL值,计算结果会返回NULL,可根据业务需求用ISNULL(E.start_dt, GETDATE())处理(比如默认用当前日期兜底)。
内容的提问来源于stack exchange,提问作者Arghwork
相关产品推荐
相关产品推荐

