LEAD() IGNORE NULLS疑似Bug:返回结果与LAG() IGNORE NULLS一致?
这确实是SQL Server的Bug,并非你的用法问题
从你的测试结果能明确看到:LEAD(Value) IGNORE NULLS没有按照语义返回当前行之后的第一个非NULL值,反而和LAG(Value) IGNORE NULLS的输出完全一致——返回了当前行之前的最后一个非NULL值,这是SQL Server处理LEAD窗口函数IGNORE NULLS选项时的逻辑错误。
你用FIRST_VALUE(Value) IGNORE NULLS OVER(ORDER BY Id ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING)计算出的结果,完全符合LEAD(Value) IGNORE NULLS的预期行为:跳过后续所有NULL,取第一个有效Value。
上报Bug的最佳渠道
直接通过微软SQL Server反馈中心提交:
- 使用微软账户登录官方反馈页面
- 提交时需包含:
- 完整的测试脚本(建表+插入+查询)
- 实际结果与预期结果的对比表格
- 你使用的SQL Server版本(从测试环境看是SQL Server 2022)
- 提交前可先搜索是否已有相同Bug报告,若存在可补充细节并点赞,加快官方处理进度。
内容的提问来源于stack exchange,提问作者T N
相关产品推荐
相关产品推荐

