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

Teradata两表左连接实现取Table2最新记录(NULL优先或最大日期)

Teradata左连接匹配客户最新有效期记录实现方案

核心实现逻辑

  • 匹配优先级:valid_end为NULL的当前有效记录优先级最高,无符合记录时取valid_end最大值的历史记录
  • 分组排序:按client_id分组,自定义排序规则将高优先级记录排在组内首位
  • 结果过滤:通过QUALIFY语句取每组第一条匹配记录,保留左连接特性,不会丢失Table1中存在的客户

实现代码

SELECT
  t1.client_id,
  t2.valid_end
FROM Table1 t1
LEFT JOIN Table2 t2
  ON t1.client_id = t2.client_id
QUALIFY ROW_NUMBER() OVER (
  PARTITION BY t1.client_id
  ORDER BY
    -- 标记当前有效记录为最高优先级
    CASE WHEN t2.valid_end IS NULL THEN 1 ELSE 2 END ASC,
    -- 非当前有效记录按有效期倒序,取最新的
    t2.valid_end DESC
) = 1;

常见问题说明

直接使用MAX()函数匹配会不符合预期的原因:Teradata中MAX()聚合会自动忽略NULL值,无法识别并优先返回代表当前有效的NULL记录,因此需要通过自定义排序的窗口函数实现优先级匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:24:05