使用Oracle SQL Developer执行此操作的最佳方式是什么?如何向表中插入值基于其他表中列的总和值?
我需要检查表Primary中的14天(两周mon_wk_1,tue_wk_2等..列),以查看是否有一周中任何一天的任何小时数,如果有,则将当天的小时数值插入load_table中的相应字段。
如果在主表中没有任何小时,则检查辅助表中的14天日期列以查看是否有任何小时,如果有,则使用次表的值插入到load_table中。如果主表和次表都没有显示这两周的任何小时数,则使用默认表中默认记录的客户端值。
我正在考虑总结几天,然后如果sum> 0使用插入的主表值,如果使用某些< 0,如果它需要使用默认值不知道如何设置。有没有更好的方式来做到这一点
事情是这样的:
BEGIN
IF
SELECT (SUM
(NVL(MON_HRS_1,0) +
NVL(TUE_HRS_1,0) +
NVL(WED_HRS_1,0) +
NVL(THUR_HRS_1,0) +
NVL(FRI_HRS_1,0) +
NVL(SAT_HRS_1,0) +
NVL(SUN_HRS_1,0) +
NVL(MON_HRS_2,0) +
NVL(TUE_HRS_2,0) +
NVL(WED_HRS_2,0) +
NVL(THUR_HRS_2,0) +
NVL(FRI_HRS_2,0) +
NVL(SAT_HRS_2,0) +
NVL(SUN_HRS_2,0)) AS TOTAL
FROM PRIMARY_TABLE PT
JOIN EMPLOYEE E
ON PT.CLIENT_ID = E.CLIENT_ID
AND PT.EE_ID = E.EE_ID
WHERE CLIENT_ID = 'FOOBAR') >0
THEN
INSERT INTO LOAD_TABLE
SELECT
E.EMPLOYEE_NAME,
E.EMPLOYEE_NUMBER,
E.EE_ID,
PT.NVL(MON_HRS_1,0),
PT.NVL(TUE_HRS_1,0),
PT.NVL(WED_HRS_1,0),
PT.NVL(THUR_HRS_1,0),
PT.NVL(FRI_HRS_1,0),
PT.NVL(SAT_HRS_1,0),
PT.NVL(SUN_HRS_1,0),
PT.NVL(MON_HRS_2,0),
PT.NVL(TUE_HRS_2,0),
PT.NVL(WED_HRS_2,0),
PT.NVL(THUR_HRS_2,0),
PT.NVL(FRI_HRS_2,0),
PT.NVL(SAT_HRS_2,0),
PT.NVL(SUN_HRS_2,0),
DATE(SYSDATE),
1 AS USER_ID
FROM PRIMARY_TABLE PT
JOIN EMPLOYEE E
ON PT.CLIENT_ID = E.CLIENT_ID
AND PT.EE_ID = E.EE_ID
WHERE CLIENT_ID = 'FOOBAR');
ELSE
INSERT INTO LOAD_TABLE
(
SELECT
E.EMPLOYEE_NAME,
E.EMPLOYEE_NUMBER,
E.EE_ID,
PT.NVL(MON_HRS_1,0),
PT.NVL(TUE_HRS_1,0),
PT.NVL(WED_HRS_1,0),
PT.NVL(THUR_HRS_1,0),
PT.NVL(FRI_HRS_1,0),
PT.NVL(SAT_HRS_1,0),
PT.NVL(SUN_HRS_1,0),
PT.NVL(MON_HRS_2,0),
PT.NVL(TUE_HRS_2,0),
PT.NVL(WED_HRS_2,0),
PT.NVL(THUR_HRS_2,0),
PT.NVL(FRI_HRS_2,0),
PT.NVL(SAT_HRS_2,0),
PT.NVL(SUN_HRS_2,0),
DATE(SYSDATE),
1 AS USER_ID
FROM SECONDAY_TABLE PT
JOIN EMPLOYEE E
ON PT.CLIENT_ID = E.CLIENT_ID
AND PT.EE_ID = E.EE_ID
WHERE CLIENT_ID = 'FOOBAR'
);
END IF;
END;
数据源表:
主表
EE_ID VARCHAR2,
CLIENT_ID VARCHAR2,
MON_HRS_1 NUMBER,
TUE_HRS_1 NUMBER,
WED_HRS_1 NUMBER,
THUR_HRS_1 NUMBER,
FRI_HRS_1 NUMBER,
SAT_HRS_1 NUMBER,
SUN_HRS_1 NUMBER,
MON_HRS_2 NUMBER,
TUE_HRS_2 NUMBER,
WED_HRS_2 NUMBER,
THUR_HRS_2 NUMBER,
FRI_HRS_2 NUMBER,
SAT_HRS_2 NUMBER,
SUN_HRS_2 NUMBER,
ACTUAL_HRS_WK NUMBER,
COMMENTS VARCHAR2
辅助表
EE_ID VARCHAR2,
CLIENT_ID VARCHAR2,
SCHEDULE_ID VARCHAR2
MON_HRS_1 NUMBER,
TUE_HRS_1 NUMBER,
WED_HRS_1 NUMBER,
THUR_HRS_1 NUMBER,
FRI_HRS_1 NUMBER,
SAT_HRS_1 NUMBER,
SUN_HRS_1 NUMBER,
MON_HRS_2 NUMBER,
TUE_HRS_2 NUMBER,
WED_HRS_2 NUMBER,
THUR_HRS_2 NUMBER,
FRI_HRS_2 NUMBER,
SAT_HRS_2 NUMBER,
SUN_HRS_2 NUMBER,
ACTUAL_HRS_WK NUMBER,
COMMENTS VARCHAR2
Client_default
CLIENT_ID VARCHAR2,
MON_HRS_1 NUMBER,
TUE_HRS_1 NUMBER,
WED_HRS_1 NUMBER,
THUR_HRS_1 NUMBER,
FRI_HRS_1 NUMBER,
SAT_HRS_1 NUMBER,
SUN_HRS_1 NUMBER,
MON_HRS_2 NUMBER,
TUE_HRS_2 NUMBER,
WED_HRS_2 NUMBER,
THUR_HRS_2 NUMBER,
FRI_HRS_2 NUMBER,
SAT_HRS_2 NUMBER,
SUN_HRS_2 NUMBER,
ACTUAL_HRS_WK NUMBER
Load_table
EMPLOYEE_NAME VARCHAR2,
EMPLOYEE_NUMBER NUMBER,
EE_ID VARCHAR VARCHAR2,
MON_HRS_1 NUMBER,
TUE_HRS_1 NUMBER,
WED_HRS_1 NUMBER,
THUR_HRS_1 NUMBER,
FRI_HRS_1 NUMBER,
SAT_HRS_1 NUMBER,
SUN_HRS_1 NUMBER,
MON_HRS_2 NUMBER,
TUE_HRS_2 NUMBER,
WED_HRS_2 NUMBER,
THUR_HRS_2 NUMBER,
FRI_HRS_2 NUMBER,
SAT_HRS_2 NUMBER,
SUN_HRS_2 NUMBER,
CREATE_DATE DATETIME,
USER_ID VARCHAR2
EMPLOYEE_TABLE
EMPLOYEE_NAME,
EMPLOYEE_NUMBER,
EE_ID,
DEPARTMENT,
SSN
*如果可能*,你能具体描述一下您的表结构? – abhi
你好阿比!我在底部添加了数据源表。希望能帮助到你。谢谢! :D –
回答了我自己的问题abhi。谢谢!!! :) –