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

Teradata SQL中生成日期序列下一个可用值的查询语法求助

Teradata SQL 获取下一个可用BUS_DAY_SEQ的实现

核心逻辑

利用Teradata支持的IGNORE NULLS窗口函数参数,结合FIRST_VALUE筛选当前日期之后第一个非空的BUS_DAY_SEQ值。

基础版(包含当前行非空值)

如果当前行的BUS_DAY_SEQ非空,NEXT_BUS_DAY_SEQ会返回当前值;如果当前行空,则返回后续第一个非空值:

SELECT
  CALENDAR_DATE,
  BUS_DAY_SEQ,
  FIRST_VALUE(BUS_DAY_SEQ IGNORE NULLS) OVER (
    ORDER BY CALENDAR_DATE ASC
    ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
  ) AS NEXT_BUS_DAY_SEQ
FROM your_table;

进阶版(仅取当前行之后的非空值)

如果需要排除当前行,只取当前日期之后的第一个非空BUS_DAY_SEQ,调整窗口范围即可:

SELECT
  CALENDAR_DATE,
  BUS_DAY_SEQ,
  FIRST_VALUE(BUS_DAY_SEQ IGNORE NULLS) OVER (
    ORDER BY CALENDAR_DATE ASC
    ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING
  ) AS NEXT_BUS_DAY_SEQ
FROM your_table;

关键参数说明

  • IGNORE NULLS:让窗口函数跳过空值,直接定位到第一个非空的BUS_DAY_SEQ
  • ROWS BETWEEN ... AND ...:定义窗口范围,确保只从当前行(或下一行)开始往后查找
  • ORDER BY CALENDAR_DATE ASC:保证按日期顺序查找后续的可用值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:02:03