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

Teradata SQL:为交易表添加滚动型最近交易日期列的技术需求

Teradata SQL实现滚动最近交易日期需求

这是个典型的反向向前填充场景:我们需要为每条无交易的记录,关联到它之后最近的有交易日期,同时有交易的记录直接关联自身日期。在Teradata中,用窗口函数就能简洁高效地完成这个逻辑。

实现代码

假设你的表名为transaction_data,执行以下SQL即可得到目标结果:

SELECT
    Connect_Date,
    TRX_Count,
    -- 抓取当前行及后续行中第一个有交易的日期
    FIRST_VALUE(CASE WHEN TRX_Count > 0 THEN Connect_Date END) 
        OVER (ORDER BY Connect_Date ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS Last_Date
FROM
    transaction_data
ORDER BY
    Connect_Date;

代码逻辑解释

  1. 标记有效交易日期:用CASE WHEN TRX_Count > 0 THEN Connect_Date END将有交易的行标记为对应日期,无交易行返回NULL。
  2. 窗口函数匹配最近日期:FIRST_VALUE()函数会在指定窗口内取第一个非NULL值。这里窗口范围设置为当前行到所有后续行(ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),按Connect_Date升序排序,刚好能抓取到当前行之后最近的有效交易日期。
  3. 结果验证:执行后会完全匹配你给出的期望结果——比如1-May、2-May的Last_Date会是3-May,4-May、5-May的Last_Date会是6-May,以此类推。

如果你的Connect_Date是标准日期类型(而非示例中的字符串),排序会更精准,无需额外调整代码。

内容的提问来源于stack exchange,提问作者Ahmed Mohammed Abdel Kader

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:53:11