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;
代码逻辑解释
- 标记有效交易日期:用
CASE WHEN TRX_Count > 0 THEN Connect_Date END将有交易的行标记为对应日期,无交易行返回NULL。 - 窗口函数匹配最近日期:
FIRST_VALUE()函数会在指定窗口内取第一个非NULL值。这里窗口范围设置为当前行到所有后续行(ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),按Connect_Date升序排序,刚好能抓取到当前行之后最近的有效交易日期。 - 结果验证:执行后会完全匹配你给出的期望结果——比如1-May、2-May的
Last_Date会是3-May,4-May、5-May的Last_Date会是6-May,以此类推。
如果你的Connect_Date是标准日期类型(而非示例中的字符串),排序会更精准,无需额外调整代码。
内容的提问来源于stack exchange,提问作者Ahmed Mohammed Abdel Kader
相关产品推荐
相关产品推荐

