根据当前值获取下一个更高的值
Get next, higher value based on current value
我正在尝试从日志中获取下一个审核 ID,但我为每个 AuditID 获取了多个 NextAuditID。
几个问题:
- 如何纠正?
- 这是最有效的方法吗?
我的代码:
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
我正在尝试从日志中获取下一个审核 ID,但我为每个 AuditID 获取了多个 NextAuditID。
几个问题:
- 如何纠正?
- 这是最有效的方法吗?
我的代码:
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