oracle - 我想使用其他表中的条件向下更新日期时间直到下一个日期
问题描述
我已经在dbfiddle上制作了所有必要的数据,其中包含三个EMPLOYEES
带有列名的表
- EMPLOYEE_ID1
- 周休息
第二个表命名为JOB_ROSTER
,列名为
- 员工ID
- WEEK_START
- DEP_ID
- SHIFT_ID
第三个是PAY_IN_OUT
列名为
- EMP_CODE
- DATE_IN
我想要的是我想从员工中选择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;
解决方案
推荐阅读
- linux - 如何为 CEHP 配置 OSD 容器
- pentaho - Pentaho 8 CDE:查找示例的组件源代码
- python - 如何为推荐系统的机器学习模型准备训练集?有任何想法吗?
- json - 如何使用 genson 解析嵌套的 json?
- angular - Clipboardy 无法解析依赖模块
- html - 在 Angular 中使用 ngFor 创建的具有不同样式的样式卡
- java - 使用 Eclipse 在 Java ResourceBundles 中搜索具有非 ASCI 字符的单词
- azure - Azure 数据工厂查找活动,带有表类型参数的存储过程
- javascript - 无法从 froala WSIWYG 编辑器将图像上传到亚马逊 s3
- python-3.x - Netcdf4:保存编辑更改