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

存在相同日期不同数据时,如何正确使用Lag函数处理日期?

解决Lag函数使用问题

首先修正你当前SQL的语法错误:partition by id, order by dt desc中id后面的逗号是多余的,会导致语句执行失败,必须移除。

接下来根据你的期望输出调整逻辑:

  • 若你需要next字段显示当前id分组内比当前dt晚的下一个日期,修正语法后的语句即可满足需求:
select 
   dt, 
   lag(dt) over (partition by id order by dt desc) as next
from t1

(注:按dt desc排序时,lag()会取窗口中当前行的前一行数据,也就是时间更晚的那条记录的dt)

  • 若你需要next字段显示当前id分组内比当前dt早的上一个日期,则需将排序方向改为升序:
select 
   dt, 
   lag(dt) over (partition by id order by dt asc) as next
from t1

另外补充:如果你的实际需求是获取当前记录的后续时间点(即当前行之后的下一条记录的dt),使用lead()函数会更直观,无需反转排序:

select 
   dt, 
   lead(dt) over (partition by id order by dt asc) as next
from t1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:21:48