Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oracle中日期重叠时拆分记录_Oracle - Fatal编程技术网

oracle中日期重叠时拆分记录

oracle中日期重叠时拆分记录,oracle,Oracle,我会尽力解释我的水平 我对日期重叠问题有异议。我使用的是Oracle 18.11版本 我有一个emp表,员工职位短期内会发生变化。因此,无论员工何时调到其他职位,日期仍然与“开始日期”和“结束日期”重叠 这是DDL CREATE TABLE emp_pdate ( EMP_POS_ID VARCHAR2(10 ), EMP_NUM NUMBER, POSITION_NUM VARCHAR2(20 ), MANAGER_N VARCHAR2(20 ), DE

我会尽力解释我的水平

我对日期重叠问题有异议。我使用的是Oracle 18.11版本

我有一个emp表,员工职位短期内会发生变化。因此,无论员工何时调到其他职位,日期仍然与“开始日期”和“结束日期”重叠

这是DDL

CREATE TABLE emp_pdate (
    EMP_POS_ID VARCHAR2(10 ),
    EMP_NUM NUMBER,
    POSITION_NUM VARCHAR2(20 ),
    MANAGER_N VARCHAR2(20 ),
    DEPT VARCHAR2(20 ),
    LEVEL_IN VARCHAR2(10 ),
    DIV_UNIT VARCHAR2(10 ),
    FROM_DATE DATE,
    TO_DATE DATE
);

Insert into emp_pdate (EMP_POS_ID,EMP_NUM,POSITION_NUM,MANAGER_N,DEPT,LEVEL_IN,DIV_UNIT,FROM_DATE,TO_DATE)  values ('521',12345,'REG1','Mango','bank','L1','ABB',to_date('31/01/19','DD/MM/YYYY'),to_date('15/03/20','DD/MM/YYYY'));
Insert into emp_pdate (EMP_POS_ID,EMP_NUM,POSITION_NUM,MANAGER_N,DEPT,LEVEL_IN,DIV_UNIT,FROM_DATE,TO_DATE) values ('662',12345,'REG2','Apple','estate','L2','ACC',to_date('01/04/19','DD/MM/YYYY'),to_date('05/04/19','DD/MM/YYYY'));
--Insert into EMP_POS (EMP_POS_ID,EMP_NUM,POSITION_NUM,MANAGER_N,DEPT,LEVEL_IN,DIV_UNIT,FROM_DATE,TO_DATE) values ('673',12345,'REG2','Mango','bank','L2','ACC',to_date('15/04/19','DD/MM/YYYY'),to_date('30/06/19','DD/MM/YYYY'));
Insert into emp_pdate (EMP_POS_ID,EMP_NUM,POSITION_NUM,MANAGER_N,DEPT,LEVEL_IN,DIV_UNIT,FROM_DATE,TO_DATE) values ('144',12345,'REG2','Apple','estate','L2','ACC',to_date('01/07/19','DD/MM/YYYY'),to_date('24/07/19','DD/MM/YYYY'));
Insert into emp_pdate (EMP_POS_ID,EMP_NUM,POSITION_NUM,MANAGER_N,DEPT,LEVEL_IN,DIV_UNIT,FROM_DATE,TO_DATE) values ('255',12345,'REG2','Apple','estate','L2','ACC',to_date('25/07/19','DD/MM/YYYY'),to_date('25/07/19','DD/MM/YYYY'));
Insert into emp_pdate (EMP_POS_ID,EMP_NUM,POSITION_NUM,MANAGER_N,DEPT,LEVEL_IN,DIV_UNIT,FROM_DATE,TO_DATE) values ('986',12345,'REG2','Apple','estate','L2','ACC',to_date('25/07/19','DD/MM/YYYY'),to_date('27/07/19','DD/MM/YYYY'));
Insert into emp_pdate (EMP_POS_ID,EMP_NUM,POSITION_NUM,MANAGER_N,DEPT,LEVEL_IN,DIV_UNIT,FROM_DATE,TO_DATE) values ('987',12345,'REG2','Apple','estate','L2','ACC',to_date('26/07/19','DD/MM/YYYY'),to_date('26/07/19','DD/MM/YYYY'));
比如说。员工REG2的位置与REG1重叠,在这种情况下,我希望将REG1的结束日期保持在REG2开始前一天

REG2的位置只是一天,然后REG1从第二天开始,直到他改变位置

这是源表

emp_pos_id   emp_num    position     manager     from_date        to_date           dept         level     div_unit
521                012345        REG1       mango         31/01/2019     15/03/2020      bank           L1       abb
662                012345        REG2       apple          01/04/2019       05/04/2019     estate         L2        acc
144                 012345       REG2       apple          01/07/2019       24/07/2019     estate         L2        acc
255                 012345       REG2       apple           25/07/2019       25/07/2019    estate         L2        acc
986                 012345       REG2       apple           25/07/2019       27/07/2019    estate         L2        acc
987                 012345        REG2      apple          26/07/2019       26/07/2019     estate         L2        acc
我希望数据是这样的。我们需要将记录拆分为重叠的记录

emp_pos_id  emp_num      emp_pos    manager      from_date       to_date           dept     level   div_unit
521                 012345       REG1         mango          31/01/2020    31/03/2020    bank          L1       abb
662                012345        REG2         apple          01/04/2019       05/04/2019     estate       L2        acc
988                 012345       REG1        mango          06/04/2019      30/06/2019    bank          L1       abb
144                 012345       REG2       apple          01/07/2019       24/07/2019     estate         L2        acc
255                 012345       REG2       apple           25/07/2019       25/07/2019    estate         L2        acc
986                 012345       REG2       apple           27/07/2019       27/07/2019    estate         L2        acc
987                 012345        REG2      apple          26/07/2019       26/07/2019     estate         L2        acc
989                 012345       REG1        mango          27/07/2019    15/03/2020      bank          L1       abb
emp_pos_id是一个序列号,对于新记录,而对于旧记录,它是相同的

我试着写一些类似的东西,但它没有显示出预期的结果/

选择EMP\u POS\u ID、EMP\u NUM、POSITION\u NUM、MANAGER\N、DEPT、LEVEL\u IN、DIV\u UNIT、FROM\u DATE、

案例:何时开始(从开始日期)到结束日期

潜在客户(从第1天起)超过(从第1天起按订单)

截至年月日的其他日期

迄今为止

来自emp_更新

如果有人能帮我,我将不胜感激

提前谢谢