首页 > 解决方案 > 我想使用其他表中的条件向下更新日期时间直到下一个日期

问题描述

我已经在dbfiddle上制作了所有必要的数据,其中包含三个EMPLOYEES带有列名的表

第二个表命名为JOB_ROSTER,列名为

第三个是PAY_IN_OUT列名为

我想要的是我想从员工中选择employee_id1 和Weekrest,并从job_roster 检查日期检查班次,并从date_inpay_in_out列中更新员工1000010,例如班次A,例如01-01-2021 06:01:10 AM班次B,例如01-01-2021 02:01:10 pm班次c 10-01-2021 06:01:10 pm

在那里,员工 ID 1000010 不存在,只有三个员工,job_roster例如 1000011、1000012、1000013job_roster直到下一个日期 agt 员工在 dbfiddlejob_roster中出现的第一个 03-JAN-21 比 17-jan-21 它检查班次和日期job_roster以及员工的周休息时间,然后将日期时间粘贴到pay_in_out员工 = 1000010 我正在尝试的是像这样

DECLARE  
   EMP_id EMPLOYEES.EMPLOYEE_ID1%TYPE;  
   EMP_REST EMPLOYEES.WEEK_REST%TYPE;

   CURSOR C_EMP is  
      SELECT EMPLOYEE_ID1, WEEK_REST FROM EMPLOYEES 
      WHERE SUBSID_ACCOUNT_IDX = 103001;  
BEGIN  
   OPEN C_EMP;  
   LOOP  
      FETCH C_EMP into EMP_id, EMP_REST ;
      UPDATE PAY_IN_OUT
  SET DATE_IN = TO_DATE('01-01-2021 02:10:01 AM','DD-MM-YYYY HH:MM:SS AM')
WHERE 
 EMP_CODE = 1000010 
    AND ATT_DATE IN (SELECT WEEKSTART FROM job_roster where shift_id = 'A')
    AND TO_CHAR( ATT_DATE, 'D' )=EMP_REST;  
    EXIT WHEN C_EMP%notfound;      
END LOOP;  
CLOSE C_EMP;  
END;

标签: oracleplsqloracle11goracle-sqldeveloper

解决方案


推荐阅读