Вы находитесь на странице: 1из 4

MERGE /*+ INDEX(target, rpm_event_itemloc_i1)*/ INTO

RPM_EVENT_ITEMLOC TARGET USING (SELECT DISTINCT T.ITEM, T.LOC,


T.LOC_TYPE, T.SELLING_UNIT_RETAIL, T.SELLING_UOM, T.MULTI_UNITS,
T.MULTI_UNIT_RETAIL, T.MULTI_SELLING_UOM,
T.CURRENT_SELLING_RETAIL, T.CURRENT_SELLING_UOM,
T.CURRENT_CLEAR_RETAIL, T.CURRENT_CLEAR_UOM,
T.CURRENT_SIMPLE_PROMO_RETAIL, T.CURRENT_SIMPLE_PROMO_UOM, NULL
PROM_EVENT, T.PRICE_CHG_TYPE, T.CURRENCY_CODE,
T.OLD_SELLING_UNIT_RETAIL, T.OLD_SELLING_UOM,
T.VENDOR_FUNDED_IND, T.FUNDING_TYPE, T.FUNDING_AMOUNT,
T.FUNDING_AMOUNT_CURRENCY, T.FUNDING_PERCENT, T.DEAL_ID,
T.DEAL_DETAIL_ID, T.ACTIVE_DATE, T.IS_ON_CLEARANCE,
T.PC_REASON_CODE, NULL CHANGE_TYPE, NULL CHANGE_AMOUNT,
T.CLEAR_IND, T.PRIMARY_CNTRY, T.PRIMARY_SUPP, T.IL_ROWID,
T.CURRENT_UNIT_RETAIL, CASE WHEN T.PROMO_ID IS NOT NULL AND
RPILE2.PROMO_ID IS NOT NULL AND NOT (RPILE2.PROMO_ID =
T.PROMO_ID AND RPILE2.PROMO_DTL_ID != T.PROMO_DTL_ID AND
RPILE2.EXCEPTION_PARENT_ID IS NULL) AND NOT (RPILE2.PROMO_ID =
T.PROMO_ID AND RPILE2.PROMO_COMP_ID = T.PROMO_COMP_ID AND
RPILE2.PROMO_DTL_ID != T.PROMO_DTL_ID AND
RPILE2.EXCEPTION_PARENT_ID IS NOT NULL) THEN T.FUTURE_RETAIL_ID
ELSE NULL END PC_AFFECTED_PROMO_FR_ID, T.PRICE_EVENT_ID,
T.LAST_EXECUTION_DATE, T.DEPT, T.CLASS, T.SUBCLASS,
T.STANDARD_UOM, T.PACK_IND, T.SELLABLE_IND, T.ORDERABLE_IND,
T.PACK_TYPE, T.ORIG_EVENT_TYPE, T.IS_ON_SIMPLE_PROMO FROM
(SELECT /*+ CARDINALITY (pc, 1000) ORDERED */ RFR.ITEM,
RFR.LOCATION LOC, CASE RFR.ZONE_NODE_TYPE WHEN :B10 THEN :B9
ELSE :B8 END LOC_TYPE, RFR.CLEAR_RETAIL SELLING_UNIT_RETAIL,
RFR.CLEAR_UOM SELLING_UOM, RFR.MULTI_UNITS,
RFR.MULTI_UNIT_RETAIL, RFR.MULTI_SELLING_UOM, RFR.SELLING_RETAIL
CURRENT_SELLING_RETAIL, RFR.SELLING_UOM CURRENT_SELLING_UOM,
RFR.CLEAR_RETAIL CURRENT_CLEAR_RETAIL, RFR.CLEAR_UOM
CURRENT_CLEAR_UOM, RFR.SIMPLE_PROMO_RETAIL
CURRENT_SIMPLE_PROMO_RETAIL, RFR.SIMPLE_PROMO_UOM
CURRENT_SIMPLE_PROMO_UOM, :B6 PRICE_CHG_TYPE,
NVL(RFR.CLEAR_RETAIL_CURRENCY, RFR.SELLING_RETAIL_CURRENCY)
CURRENCY_CODE, IL.SELLING_UNIT_RETAIL OLD_SELLING_UNIT_RETAIL,
IL.SELLING_UOM OLD_SELLING_UOM, RC.VENDOR_FUNDED_IND,
RC.FUNDING_TYPE, RC.FUNDING_AMOUNT, RC.FUNDING_AMOUNT_CURRENCY,
RC.FUNDING_PERCENT, RC.DEAL_ID, RC.DEAL_DETAIL_ID,
RFR.ACTION_DATE ACTIVE_DATE, 1 IS_ON_CLEARANCE, RC.REASON_CODE
PC_REASON_CODE, IL.CLEAR_IND, IL.PRIMARY_CNTRY, IL.PRIMARY_SUPP,
IL.ROWID IL_ROWID, IL.UNIT_RETAIL CURRENT_UNIT_RETAIL,
PC.PRICE_CHANGE_ID PRICE_EVENT_ID, :B7 LAST_EXECUTION_DATE,
IM.DEPT, IM.CLASS, IM.SUBCLASS, IM.STANDARD_UOM, IM.PACK_IND,
IM.SELLABLE_IND, IM.ORDERABLE_IND, IM.PACK_TYPE, :B6
ORIG_EVENT_TYPE, RFR.ON_SIMPLE_PROMO_IND IS_ON_SIMPLE_PROMO,
RFR.FUTURE_RETAIL_ID, RPILE.PROMO_ID, RPILE.PROMO_COMP_ID,
RPILE.PROMO_DTL_ID FROM TABLE(CAST(:B1 AS
OBJ_PRICE_CHANGE_IL_TBL)) PC, RPM_CLEARANCE RC, ITEM_MASTER IM,
ITEM_LOC IL, RPM_FUTURE_RETAIL_GTT RFR,
RPM_PROMO_ITEM_LOC_EXPL_GTT RPILE WHERE PC.PRICE_CHANGE_TYPE =
:B6 AND RC.CLEARANCE_ID = PC.PRICE_CHANGE_ID AND IM.ITEM =
PC.ITEM AND IL.ITEM = PC.ITEM AND IL.LOC = PC.LOCATION AND
RFR.PRICE_EVENT_ID = PC.PRICE_CHANGE_ID AND RFR.DEPT = IM.DEPT
AND RFR.ITEM = PC.ITEM AND RFR.LOCATION = PC.LOCATION AND
RFR.CLEAR_START_IND IN (:B5 , :B4 ) AND RFR.CLEARANCE_ID =
PC.PRICE_CHANGE_ID AND RPILE.PRICE_EVENT_ID (+) =
RFR.PRICE_EVENT_ID AND RPILE.ITEM (+) = RFR.ITEM AND
RPILE.LOCATION (+) = RFR.LOCATION AND RFR.ACTION_DATE >=
RPILE.DETAIL_START_DATE (+) AND RFR.ACTION_DATE <=
NVL(RPILE.DETAIL_END_DATE (+), RFR.ACTION_DATE) AND
RPILE.DETAIL_CHANGE_TYPE (+) != :B3 AND RPILE.TYPE (+) = :B2 AND
RPILE.CUSTOMER_TYPE (+) IS NULL) T, RPM_PROMO_ITEM_LOC_EXPL_GTT
RPILE2 WHERE RPILE2.ITEM (+) = T.ITEM AND RPILE2.LOCATION (+) =
T.LOC AND RPILE2.DETAIL_CHANGE_TYPE (+) = :B3 UNION ALL SELECT
DISTINCT T.ITEM, T.LOC, T.LOC_TYPE, T.SELLING_UNIT_RETAIL,
T.SELLING_UOM, T.MULTI_UNITS, T.MULTI_UNIT_RETAIL,
T.MULTI_SELLING_UOM, T.CURRENT_SELLING_RETAIL,
T.CURRENT_SELLING_UOM, T.CURRENT_CLEAR_RETAIL,
T.CURRENT_CLEAR_UOM, T.CURRENT_SIMPLE_PROMO_RETAIL,
T.CURRENT_SIMPLE_PROMO_UOM, NULL PROM_EVENT, T.PRICE_CHG_TYPE,
T.CURRENCY_CODE, T.OLD_SELLING_UNIT_RETAIL, T.OLD_SELLING_UOM,
NULL VENDOR_FUNDED_IND, NULL FUNDING_TYPE, NULL FUNDING_AMOUNT,
NULL FUNDING_AMOUNT_CURRENCY, NULL FUNDING_PERCENT, NULL
DEAL_ID, NULL DEAL_DETAIL_ID, T.ACTIVE_DATE, T.IS_ON_CLEARANCE,
T.PC_REASON_CODE, NULL CHANGE_TYPE, NULL CHANGE_AMOUNT,
T.CLEAR_IND, T.PRIMARY_CNTRY, T.PRIMARY_SUPP, T.IL_ROWID,
T.CURRENT_UNIT_RETAIL, CASE WHEN T.PROMO_ID IS NOT NULL AND
RPILE2.PROMO_ID IS NOT NULL AND NOT (RPILE2.PROMO_ID =
T.PROMO_ID AND RPILE2.PROMO_DTL_ID != T.PROMO_DTL_ID AND
RPILE2.EXCEPTION_PARENT_ID IS NULL) AND NOT (RPILE2.PROMO_ID =
T.PROMO_ID AND RPILE2.PROMO_COMP_ID = T.PROMO_COMP_ID AND
RPILE2.PROMO_DTL_ID != T.PROMO_DTL_ID AND
RPILE2.EXCEPTION_PARENT_ID IS NOT NULL) THEN T.FUTURE_RETAIL_ID
ELSE NULL END PC_AFFECTED_PROMO_FR_ID, T.PRICE_EVENT_ID,
T.LAST_EXECUTION_DATE, T.DEPT, T.CLASS, T.SUBCLASS,
T.STANDARD_UOM, T.PACK_IND, T.SELLABLE_IND, T.ORDERABLE_IND,
T.PACK_TYPE, T.ORIG_EVENT_TYPE, T.IS_ON_SIMPLE_PROMO FROM
(SELECT /*+ CARDINALITY (pc, 1000) ORDERED */ RFR.ITEM,
RFR.LOCATION LOC, CASE RFR.ZONE_NODE_TYPE WHEN 0 THEN :B9 ELSE
:B8 END LOC_TYPE, RFR.CLEAR_RETAIL SELLING_UNIT_RETAIL,
RFR.CLEAR_UOM SELLING_UOM, RFR.MULTI_UNITS,
RFR.MULTI_UNIT_RETAIL, RFR.MULTI_SELLING_UOM, RFR.SELLING_RETAIL
CURRENT_SELLING_RETAIL, RFR.SELLING_UOM CURRENT_SELLING_UOM,
RFR.CLEAR_RETAIL CURRENT_CLEAR_RETAIL, RFR.CLEAR_UOM
CURRENT_CLEAR_UOM, RFR.SIMPLE_PROMO_RETAIL
CURRENT_SIMPLE_PROMO_RETAIL, RFR.SIMPLE_PROMO_UOM
CURRENT_SIMPLE_PROMO_UOM, :B12 PRICE_CHG_TYPE,
NVL(RFR.CLEAR_RETAIL_CURRENCY, RFR.SELLING_RETAIL_CURRENCY)
CURRENCY_CODE, IL.SELLING_UNIT_RETAIL OLD_SELLING_UNIT_RETAIL,
IL.SELLING_UOM OLD_SELLING_UOM, RFR.ACTION_DATE ACTIVE_DATE, 0
IS_ON_CLEARANCE, RC.REASON_CODE PC_REASON_CODE, 'N' CLEAR_IND,
IL.PRIMARY_CNTRY, IL.PRIMARY_SUPP, IL.ROWID IL_ROWID,
IL.UNIT_RETAIL CURRENT_UNIT_RETAIL, PC.PRICE_CHANGE_ID
PRICE_EVENT_ID, :B7 LAST_EXECUTION_DATE, IM.DEPT, IM.CLASS,
IM.SUBCLASS, IM.STANDARD_UOM, IM.PACK_IND, IM.SELLABLE_IND,
IM.ORDERABLE_IND, IM.PACK_TYPE, :B12 ORIG_EVENT_TYPE,
RFR.ON_SIMPLE_PROMO_IND IS_ON_SIMPLE_PROMO,
RFR.FUTURE_RETAIL_ID, RPILE.PROMO_ID, RPILE.PROMO_COMP_ID,
RPILE.PROMO_DTL_ID FROM TABLE(CAST(:B1 AS
OBJ_PRICE_CHANGE_IL_TBL)) PC, RPM_CLEARANCE_RESET RC,
ITEM_MASTER IM, ITEM_LOC IL, RPM_FUTURE_RETAIL_GTT RFR,
RPM_PROMO_ITEM_LOC_EXPL_GTT RPILE WHERE PC.PRICE_CHANGE_TYPE =
:B12 AND RC.CLEARANCE_ID = PC.PRICE_CHANGE_ID AND IM.ITEM =
PC.ITEM AND IL.ITEM = PC.ITEM AND IL.LOC = PC.LOCATION AND
RFR.PRICE_EVENT_ID = PC.PRICE_CHANGE_ID AND RFR.DEPT = IM.DEPT
AND RFR.ITEM = PC.ITEM AND RFR.LOCATION = PC.LOCATION AND
RFR.CLEAR_START_IND = :B11 AND RPILE.PRICE_EVENT_ID (+) =
RFR.PRICE_EVENT_ID AND RPILE.ITEM (+) = RFR.ITEM AND
RPILE.LOCATION (+) = RFR.LOCATION AND RFR.ACTION_DATE >=
RPILE.DETAIL_START_DATE (+) AND RFR.ACTION_DATE <=
NVL(RPILE.DETAIL_END_DATE (+), RFR.ACTION_DATE) AND
RPILE.DETAIL_CHANGE_TYPE (+) != :B3 AND RPILE.TYPE (+) = :B2 AND
RPILE.CUSTOMER_TYPE (+) IS NULL) T, RPM_PROMO_ITEM_LOC_EXPL_GTT
RPILE2 WHERE RPILE2.ITEM (+) = T.ITEM AND RPILE2.LOCATION (+) =
T.LOC AND RPILE2.DETAIL_CHANGE_TYPE (+) = :B3 ) SOURCE ON (
TARGET.PRICE_CHG_TYPE = SOURCE.PRICE_CHG_TYPE AND
TARGET.ORIG_EVENT_TYPE = SOURCE.ORIG_EVENT_TYPE AND
TARGET.PRICE_EVENT_ID = SOURCE.PRICE_EVENT_ID AND TARGET.ITEM =
SOURCE.ITEM AND TARGET.LOC = SOURCE.LOC AND TARGET.LOC_TYPE =
SOURCE.LOC_TYPE AND TARGET.ACTIVE_DATE = SOURCE.ACTIVE_DATE)
WHEN MATCHED THEN UPDATE SET SELLING_UNIT_RETAIL =
SOURCE.SELLING_UNIT_RETAIL, SELLING_UOM = SOURCE.SELLING_UOM,
MULTI_UNITS = SOURCE.MULTI_UNITS, MULTI_UNIT_RETAIL =
SOURCE.MULTI_UNIT_RETAIL, MULTI_SELLING_UOM =
SOURCE.MULTI_SELLING_UOM, PROM_EVENT = SOURCE.PROM_EVENT,
CURRENCY_CODE = SOURCE.CURRENCY_CODE, OLD_SELLING_UNIT_RETAIL =
SOURCE.OLD_SELLING_UNIT_RETAIL, OLD_SELLING_UOM =
SOURCE.OLD_SELLING_UOM, VENDOR_FUNDED_IND =
SOURCE.VENDOR_FUNDED_IND, FUNDING_TYPE = SOURCE.FUNDING_TYPE,
FUNDING_AMOUNT = SOURCE.FUNDING_AMOUNT, FUNDING_AMOUNT_CURRENCY
= SOURCE.FUNDING_AMOUNT_CURRENCY, FUNDING_PERCENT =
SOURCE.FUNDING_PERCENT, DEAL_ID = SOURCE.DEAL_ID, DEAL_DETAIL_ID
= SOURCE.DEAL_DETAIL_ID, IS_ON_CLEARANCE =
SOURCE.IS_ON_CLEARANCE, PC_REASON_CODE = SOURCE.PC_REASON_CODE,
CHANGE_TYPE = SOURCE.CHANGE_TYPE, CHANGE_AMOUNT =
SOURCE.CHANGE_AMOUNT, CLEAR_IND = SOURCE.CLEAR_IND,
PRIMARY_CNTRY = SOURCE.PRIMARY_CNTRY, PRIMARY_SUPP =
SOURCE.PRIMARY_SUPP, IL_ROWID = SOURCE.IL_ROWID,
CURRENT_UNIT_RETAIL = SOURCE.CURRENT_UNIT_RETAIL,
PC_AFFECTED_PROMO_FR_ID = SOURCE.PC_AFFECTED_PROMO_FR_ID,
LAST_EXECUTION_DATE = SOURCE.LAST_EXECUTION_DATE, DEPT =
SOURCE.DEPT, CLASS = SOURCE.CLASS, SUBCLASS = SOURCE.SUBCLASS,
STANDARD_UOM = SOURCE.STANDARD_UOM, PACK_IND = SOURCE.PACK_IND,
SELLABLE_IND = SOURCE.SELLABLE_IND, ORDERABLE_IND =
SOURCE.ORDERABLE_IND, PACK_TYPE = SOURCE.PACK_TYPE,
CURRENT_SELLING_RETAIL = SOURCE.CURRENT_SELLING_RETAIL,
CURRENT_SELLING_UOM = SOURCE.CURRENT_SELLING_UOM,
CURRENT_CLEAR_RETAIL = SOURCE.CURRENT_CLEAR_RETAIL,
CURRENT_CLEAR_UOM = SOURCE.CURRENT_CLEAR_UOM,
CURRENT_SIMPLE_PROMO_RETAIL = SOURCE.CURRENT_SIMPLE_PROMO_RETAIL,
CURRENT_SIMPLE_PROMO_UOM = SOURCE.CURRENT_SIMPLE_PROMO_UOM,
IS_ON_SIMPLE_PROMO = SOURCE.IS_ON_SIMPLE_PROMO WHEN NOT MATCHED
THEN INSERT (ITEM, LOC, LOC_TYPE, SELLING_UNIT_RETAIL,
SELLING_UOM, MULTI_UNITS, MULTI_UNIT_RETAIL, MULTI_SELLING_UOM,
PROM_EVENT, PRICE_CHG_TYPE, CURRENCY_CODE,
OLD_SELLING_UNIT_RETAIL, OLD_SELLING_UOM, VENDOR_FUNDED_IND,
FUNDING_TYPE, FUNDING_AMOUNT, FUNDING_AMOUNT_CURRENCY,
FUNDING_PERCENT, DEAL_ID, DEAL_DETAIL_ID, ACTIVE_DATE,
IS_ON_CLEARANCE, PC_REASON_CODE, CHANGE_TYPE, CHANGE_AMOUNT,
CLEAR_IND, PRIMARY_CNTRY, PRIMARY_SUPP, IL_ROWID,
CURRENT_UNIT_RETAIL, PC_AFFECTED_PROMO_FR_ID, PRICE_EVENT_ID,
LAST_EXECUTION_DATE, DEPT, CLASS, SUBCLASS, STANDARD_UOM,
PACK_IND, SELLABLE_IND, ORDERABLE_IND, PACK_TYPE,
ORIG_EVENT_TYPE, CURRENT_SELLING_RETAIL, CURRENT_SELLING_UOM,
CURRENT_CLEAR_RETAIL, CURRENT_CLEAR_UOM,
CURRENT_SIMPLE_PROMO_RETAIL, CURRENT_SIMPLE_PROMO_UOM,
IS_ON_SIMPLE_PROMO) VALUES (SOURCE.ITEM, SOURCE.LOC,
SOURCE.LOC_TYPE, SOURCE.SELLING_UNIT_RETAIL, SOURCE.SELLING_UOM,
SOURCE.MULTI_UNITS, SOURCE.MULTI_UNIT_RETAIL,
SOURCE.MULTI_SELLING_UOM, SOURCE.PROM_EVENT,
SOURCE.PRICE_CHG_TYPE, SOURCE.CURRENCY_CODE,
SOURCE.OLD_SELLING_UNIT_RETAIL, SOURCE.OLD_SELLING_UOM,
SOURCE.VENDOR_FUNDED_IND, SOURCE.FUNDING_TYPE,
SOURCE.FUNDING_AMOUNT, SOURCE.FUNDING_AMOUNT_CURRENCY,
SOURCE.FUNDING_PERCENT, SOURCE.DEAL_ID, SOURCE.DEAL_DETAIL_ID,
SOURCE.ACTIVE_DATE, SOURCE.IS_ON_CLEARANCE,
SOURCE.PC_REASON_CODE, SOURCE.CHANGE_TYPE, SOURCE.CHANGE_AMOUNT,
SOURCE.CLEAR_IND, SOURCE.PRIMARY_CNTRY, SOURCE.PRIMARY_SUPP,
SOURCE.IL_ROWID, SOURCE.CURRENT_UNIT_RETAIL,
SOURCE.PC_AFFECTED_PROMO_FR_ID, SOURCE.PRICE_EVENT_ID,
SOURCE.LAST_EXECUTION_DATE, SOURCE.DEPT, SOURCE.CLASS,
SOURCE.SUBCLASS, SOURCE.STANDARD_UOM, SOURCE.PACK_IND,
SOURCE.SELLABLE_IND, SOURCE.ORDERABLE_IND, SOURCE.PACK_TYPE,
SOURCE.ORIG_EVENT_TYPE, SOURCE.CURRENT_SELLING_RETAIL,
SOURCE.CURRENT_SELLING_UOM, SOURCE.CURRENT_CLEAR_RETAIL,
SOURCE.CURRENT_CLEAR_UOM, SOURCE.CURRENT_SIMPLE_PROMO_RETAIL,
SOURCE.CURRENT_SIMPLE_PROMO_UOM, SOURCE.IS_ON_SIMPLE_PROMO)

Вам также может понравиться