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

Teradata数据表NULL值向前填充(Filling forward)实现方法咨询

Teradata向前填充(Last Non-Null填充)实现方法

方法1:LAST_VALUE + IGNORE NULLS(适用于Teradata 14.10及以上版本)

这是最简洁的实现方案,直接通过窗口函数跳过NULL值取最近的非空值:

SELECT
  EVENT,
  EVENT_NUM,
  "WHAT I HAVE",
  LAST_VALUE("WHAT I HAVE" IGNORE NULLS) OVER (
    -- 替换为能确定行先后顺序的列,如事件发生时间、自增ID等,必须指定
    ORDER BY 你的排序列
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
  ) AS "WHAT I WANT"
FROM 你的表名;

方法2:分组取最大值(兼容所有Teradata版本)

如果你的Teradata版本较低不支持IGNORE NULLS参数,可以用分组法实现,逻辑稳定通用:

WITH temp AS (
  SELECT
    EVENT,
    EVENT_NUM,
    "WHAT I HAVE",
    -- 统计当前行及之前的非空值数量,作为分组标识
    SUM(CASE WHEN "WHAT I HAVE" IS NOT NULL THEN 1 ELSE 0 END) OVER (
      ORDER BY 你的排序列
      ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS fill_group
  FROM 你的表名
)
SELECT
  EVENT,
  EVENT_NUM,
  "WHAT I HAVE",
  MAX("WHAT I HAVE") OVER (PARTITION BY fill_group) AS "WHAT I WANT"
FROM temp;

注意:两种方法都必须明确指定ORDER BY的排序列,用来确定行的先后顺序,如果你表中没有显式的排序列,可以先给数据添加自增序号作为排序依据,避免因为行顺序不确定导致填充结果错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:04