根据当前值获取下一个更高的值

Get next, higher value based on current value

我正在尝试从日志中获取下一个审核 ID,但我为每个 AuditID 获取了多个 NextAuditID。

几个问题:

  1. 如何纠正?
  2. 这是最有效的方法吗?

我的代码:

SELECT DISTINCT 
    AuditID, MIN(NextAuditID) NextAuditID
FROM
    (SELECT 
         SMStart.AuditID AuditID, SMNext.AuditID NextAuditID
     FROM 
         SchedulerMetrics SMStart,
         SchedulerMetrics SMNext
     WHERE 
         SMStart.Message = SMNext.Message
         AND SMNext.AuditID > SMStart.AuditID) tt
GROUP BY 
    AuditID, NextAuditID

您可以使用LEAD window函数:

SELECT AuditID, LEAD(AuditID) OVER (PARTITION BY Message ORDER BY AuditID) AS NextAuditID
FROM SchedulerMetrics