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

SQL中如何在同表获取次日列值?已尝试LEAD函数未获正确结果

如何用SQL实现获取次日value值的需求

原始数据

datevalue
2023-01-01100
2023-02-02400
2023-02-03749
2023-02-04432

预期结果

datevaluenext day value
2023-01-01100400
2023-02-02400749
2023-02-03749432
2023-02-04432432

问题描述

需要新增一列next day value来获取次日的value值,尝试使用LEAD(value) ORDER BY (date)函数但未得到正确结果,请问如何用SQL实现?

解决方案

你用LEAD没得到正确结果,主要是没指定合适的默认值,另外ORDER BY的写法可以更规范。

正确的SQL语句如下:

SELECT
    date,
    value,
    LEAD(value, 1, value) OVER (ORDER BY date) AS `next day value`
FROM
    your_table_name;

关键说明:

  • LEAD(value, 1, value):第一个参数是要取的目标列,第二个参数1表示取下一行数据(对应次日,因为按日期排序),第三个参数value是当没有下一行时(比如最后一条记录),用当前行的value填充,刚好匹配你的预期。
  • OVER (ORDER BY date):必须按date升序排序,保证行的顺序是日期先后,这样LEAD才能准确取到次日的值。

之前写法的问题:

  • 省略默认值的话,LEAD默认会返回NULL作为最后一行的next day value,不符合你的需求。
  • ORDER BY (date)里的括号是多余的,虽然多数数据库兼容,但规范写法是ORDER BY date。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:43:16