我有两张表,一张用于所有员工的职业生涯,另一张用于工作时间内的所有中断
这是我的桌子员工职业生涯的结构:
startDate endDate year codeMission employeNumber type
---------- ---------------------------------------------------
2001-01-01 2001-12-31 2001 Tx100 N120 work
2002-01-01 2002-12-31 2002 Tx100 N120 work
下面是我的表中断的结构
startDate endDate year codeMission employeNumber type
---------- ---------------------------------------------------------
2001-07-01 2002-04-10 2001 Tx100 N120 interpption
现在我想创建一个新表,其中包含所有员工的职业生涯,没有中断期。下面是我的示例
我希望最后的表格是这样的:
startDate endDate year codeMission employeNumber type
---------- --------------------------------------------
2001-01-01 2001-06-31 2001 Tx100 N120 work
2001-07-01 2002-04-10 2001 Tx100 N120 interpption
2002-04-11 2002-12-31 2002 Tx100 N120 work
或
startDate endDate year codeMission employeNumber type
---------- --------------------------------------------
2001-01-01 2001-06-31 2001 Tx100 N120 work
2001-07-01 2001-12-31 2001 Tx100 N120 interpption
2002-01-01 2002-04-10 2002 Tx100 N120 interpption
2002-04-11 2002-12-31 2002 Tx100 N120 work
发布于 2018-11-07 20:14:37
我在这里遵循的过程是在将数据插入新表时,如果数据在中断表a中有条目,则更新开始日期和结束日期
INSERT INTO NewTable
SELECT NVL(i2.endDate+1,e.startDate) AS startDate
,NVL(i1.startDate-1,e.endDate) AS endDate
,e.year
,e.codeMission
,e.employeNumber
,e.type
FROM Employee e
LEFT JOIN Interruption i1 ON e.employeNumber=i1.employeNumber AND YEAR(e.startDate)=YEAR(i1.startDate)
LEFT JOIN Interruption i2 ON e.employeNumber=i1.employeNumber AND YEAR(e.endDate)=YEAR(i2.endDate)
现在我们已经将employee表中的数据转换为与中断表匹配的数据,所以现在我们移动中断表中的数据
INSERT INTO NewTable
SELECT startDate
,endDate
,year
,codeMission
,employeNumber
,type
FROM Interruption
https://stackoverflow.com/questions/53188442
复制相似问题