我这里遇到了一点麻烦。 如果我有下表:
ID | Name | ini_day
-----------------------
1 | Juan | 1
2 | Nora | 5
3 | Pepe | 9
4 | Lara | 12
5 | Alex | 18
6 | Lily | 20
我需要根据下一个 ini_day 减 1 来计算最后一天的工作。 预期结果:
ID | Name | ini_day | end_day
------------------------------
1 | Juan | 1 | 4
2 | Nora | 5 | 8
3 | Pepe | 9 | 11
4 | Lara | 12 | 17
5 | Alex | 18 | 19
6 | Lily | 20 | NULL
我如何实现它?预先感谢!
在 MySQL 8+ 上,我们可以使用
LEAD()
窗口函数:
SELECT ID, Name, ini_day, LEAD(ini_day) OVER (ORDER BY ID) - 1 AS end_day
FROM yourTable
ORDER BY ID;