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

求SQL查询语句:按日期顺序逐行比较取最大record值

解决方案

要实现按date字段顺序,将当前行与下一行的record值取较大值的需求,可根据数据库版本选择以下SQL实现:

支持窗口函数的数据库(MySQL 8.0+、PostgreSQL、SQL Server等)

使用LEAD()窗口函数获取下一行的record值,再通过GREATEST()函数取两者最大值:

SELECT 
  GREATEST(record, LEAD(record) OVER (ORDER BY date)) AS max_record
FROM 
  your_table_name;
  • 细节说明:
    • LEAD(record) OVER (ORDER BY date):按date排序后,获取当前行的下一行record值,最后一行无下一行时返回NULL,此时GREATEST()会直接返回当前行的record。
    • 若要统一处理最后一行的NULL情况,可改用COALESCE兜底:
      SELECT 
        GREATEST(record, COALESCE(LEAD(record) OVER (ORDER BY date), record)) AS max_record
      FROM 
        your_table_name;
      

低版本MySQL(无窗口函数,如MySQL 5.x)

通过自连接+子查询实现:

SELECT 
  GREATEST(t1.record, COALESCE(t2.record, t1.record)) AS max_record
FROM 
  your_table_name t1
LEFT JOIN 
  your_table_name t2 ON t2.id = (
    SELECT id 
    FROM your_table_name 
    WHERE date > t1.date 
    ORDER BY date ASC 
    LIMIT 1
  )
ORDER BY 
  t1.date;
  • 细节说明:子查询会找到当前行date之后的下一条记录,再通过自连接完成取值比较。

注意:请将上述语句中的your_table_name替换为你的实际数据表名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:50:19