困惑于如何使用旧+;plsqloracle中的新特性
我有一个要求,我必须根据相同的日期、相同的原因代码和相同的员工id总结员工工作时间。我有一个完整的触发器,大约有250行。我没有写完整的触发器。我刚刚写了合并条款,在那里要做更改困惑于如何使用旧+;plsqloracle中的新特性,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个要求,我必须根据相同的日期、相同的原因代码和相同的员工id总结员工工作时间。我有一个完整的触发器,大约有250行。我没有写完整的触发器。我刚刚写了合并条款,在那里要做更改 MERGE INTO stg_ta_payroll USING (SELECT :NEW.ID_TM_ENR ID_TM_ENR, TO_NUMBER (:NEW.ID_STR_RT) ID_STR_RT, :NEW.ID_EM ID
MERGE INTO stg_ta_payroll
USING (SELECT :NEW.ID_TM_ENR ID_TM_ENR,
TO_NUMBER (:NEW.ID_STR_RT) ID_STR_RT,
:NEW.ID_EM ID_EM,
NVL (TO_NUMBER (TO_CHAR (:NEW.TS_EM_TM_IN, 'YYMMDD')), 0)
V_TA_DATE,
V_SESSION_NO V_SESSION_NO,
:NEW.TS_EM_TM_IN TS_EM_TM_IN,
:NEW.TS_EM_TM_OUT TS_EM_TM_OUT,
DECODE (
:NEW.TY_TM,
'0', NVL (TO_CHAR (:NEW.TS_EM_TM_IN, 'HH24MI'), '0000'),
' ')
V_TIME_IN,
DECODE (
:NEW.TY_TM,
'0', NVL (TO_CHAR (:NEW.TS_EM_TM_OUT, 'HH24MI'),
'0000'),
' ')
V_TIME_OUT,
V_MGR_OVRD V_MGR_OVRD,
:NEW.ID_MGR ID_MGR,
DECODE (:NEW.TY_TM, 'XX', '9', :NEW.TY_TM) TY_TM,
:NEW.OTHER_HRS_STR OTHER_HRS_STR,
V_AREA V_AREA,
V_ASSC_NAME V_ASSC_NAME,
V_MISC_WAGES_DESC V_MISC_WAGES_DESC,
V_SHRT_STR_NAME V_SHRT_STR_NAME,
(:NEW.HRS_STR + :NEW.OTHER_HRS_STR) TOT_HRS
FROM DUAL) STG
ON ( TIME_ENT_ID = STG.ID_TM_ENR
AND TO_NUMBER (STR_ID) = TO_NUMBER (STG.ID_STR_RT)
AND EMP_ID = STG.ID_EM
AND TA_DATE = STG.V_TA_DATE
AND MISC_WAGES_CODE = STG.TY_TM)
WHEN MATCHED
THEN
UPDATE SET
STATUS = NULL,
TIME_IN = STG.V_TIME_IN,
TIME_OUT = STG.V_TIME_OUT,
MGR_OVERRIDE = STG.V_MGR_OVRD,
MGR_EMP_NO = STG.ID_MGR,
MISC_WAGES_HRS =
( (NVL ( (:OLD.OTHER_HRS_STR), 0))
+ (NVL ( (:NEW.OTHER_HRS_STR), 0))),
AREA = STG.V_AREA,
ASSOCIATE_NAME = STG.V_ASSC_NAME,
MISC_WAGES_DESC = STG.V_MISC_WAGES_DESC,
SHRT_STR_NAME = STG.V_SHRT_STR_NAME,
HRS = STG.TOT_HRS,
STG_OSB_PROCESS_DATE = NULL
WHEN NOT MATCHED
THEN
INSERT (TIME_ENT_ID,
STATUS,
STR_ID,
EMP_ID,
TA_DATE,
SESSION_NO,
TIME_IN,
TIME_OUT,
MGR_OVERRIDE,
MGR_EMP_NO,
MISC_WAGES_CODE,
MISC_WAGES_HRS,
AREA,
ASSOCIATE_NAME,
MISC_WAGES_DESC,
SHRT_STR_NAME,
HRS,
STG_LOAD_DATE,
STG_EVENT_ID,
STG_OSB_STATUS)
VALUES (STG.ID_TM_ENR,
NULL,
STG.ID_STR_RT,
STG.ID_EM,
STG.V_TA_DATE,
STG.V_SESSION_NO,
STG.V_TIME_IN,
STG.V_TIME_OUT,
STG.V_MGR_OVRD,
STG.ID_MGR,
STG.TY_TM,
STG.OTHER_HRS_STR,
STG.V_AREA,
STG.V_ASSC_NAME,
STG.V_MISC_WAGES_DESC,
STG.V_SHRT_STR_NAME,
STG.TOT_HRS,
SYSDATE,
seq_stg_event_id.NEXTVAL,
0);
COMMIT;
我只需要根据相同的日期(TA_date)、相同的原因代码(TY_TM)和相同的员工id(id_EM)汇总其他_hrs_str列。在这3个条件下,如何根据其他_hrs_str的旧值+新值进行添加
有谁能帮忙吗。如果你想算数,这需要分组
这里有一个限制:输出中的列可以是GROUPBY中的列,也可以是一些聚合函数(SUM、COUNT等)
您可以通过将查询分为两部分来避免:
你目前的问题是什么 您能否尝试格式化查询以便有机会理解它?