【发布时间】:2020-07-09 12:10:23
【问题描述】:
我有一张表,其中包含一组临时工,他们的合同可以续签,并且他们在重叠期间继续工作,或者该工人可能会在稍后的某个时间回来并再次为不同部门或同一个部门工作。我的目标是以这样一种方式合并数据行,即如果工作人员的时间重叠,那么实质上重叠的时间段可以转换为一行。如果没有,则应将它们表示为单独的行。
当前输出:
+---------------------+------------------+------------------+------------------+
| Name | Department | Start Date | End Date |
+---------------------+------------------+------------------+------------------+
| Tom | Finance | 2010-08-09 | 2010-09-09 |
| Tom | Finance | 2010-09-10 | 2010-10-10 |
| Tom | HR | 2010-11-01 | 2011-01-15 |
| Tom | Finance | 2011-02-01 | 2011-03-01 |
+---------------------+------------------+------------------+------------------+
期望的输出
+---------------------+------------------+------------------+------------------+
| Name | Department | Start Date | End Date |
+---------------------+------------------+------------------+------------------+
| Tom | Finance | 2010-08-09 | 2010-10-10 |
| Tom | HR | 2010-11-01 | 2011-01-15 |
| Tom | Finance | 2011-02-01 | 2011-03-01 |
+---------------------+------------------+------------------+------------------+
我尝试按姓名和部门分组,然后输出 MIN 和 MAX 日期。但是,这不适用于上述示例。
我也尝试对订单进行排名,但是当进行值不匹配时,此功能不会重置排名编号。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。