如何根据序列号创建新的开始日期和结束日期:
从
EmpNo StartDate EndDate PositionNumber
832319 4/05/2020 10/05/2020 32681
832319 11/05/2020 17/05/2020 32681
832319 18/05/2020 24/05/2020 32681
832319 25/05/2020 31/05/2020 32681
832319 1/06/2020 7/06/2020 32681
832319 8/06/2020 14/06/2020 32681
832319 15/06/2020 21/06/2020 32783
832319 22/06/2020 28/06/2020 32783
832319 29/06/2020 5/07/2020 32783
832319 6/07/2020 12/07/2020 32781
832319 13/07/2020 19/07/2020 32781
832319 20/07/2020 26/07/2020 32681
832319 27/07/2020 2/08/2020 32681
to(为新开始日期和新结束日期创建两个新字段)
EmpNo StartDate EndDate PositionNumber NewStartDate New EndDate
832319 4/05/2020 10/05/2020 32681 4/05/2020 14/06/2020
832319 11/05/2020 17/05/2020 32681 4/05/2020 14/06/2020
832319 18/05/2020 24/05/2020 32681 4/05/2020 14/06/2020
832319 25/05/2020 31/05/2020 32681 4/05/2020 14/06/2020
832319 1/06/2020 7/06/2020 32681 4/05/2020 14/06/2020
832319 8/06/2020 14/06/2020 32681 4/05/2020 14/06/2020
832319 15/06/2020 21/06/2020 32783 21/06/2020 5/07/2020
832319 22/06/2020 28/06/2020 32783 21/06/2020 5/07/2020
832319 29/06/2020 5/07/2020 32783 21/06/2020 5/07/2020
832319 6/07/2020 12/07/2020 32781 6/07/2020 19/07/2020
832319 13/07/2020 19/07/2020 32781 6/07/2020 19/07/2020
832319 20/07/2020 26/07/2020 32681 20/07/2020 2/08/2020
832319 27/07/2020 2/08/2020 32681 20/07/2020 2/08/2020
感谢您的帮助。
2条答案
按热度按时间svgewumm1#
我认为这是一个缺口和孤岛问题。您想知道共享相同数据的“相邻”行的最小和最大日期
empNo
以及positionNo
.下面是一个使用窗口函数的方法。我们的想法是
lag()
以及累积的sum()
要定义组:db小提琴演示:
41ik7eoe2#
你在找最短开始日期和最长结束日期吗?