Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DELETE FROM rms_.dwh$delta_snapshot_data;
- DELETE FROM rms_.dwh$delta_snapshot;
- INSERT INTO rms_.dwh$delta_snapshot
- (SELECT snapshot_date
- FROM (SELECT (SELECT TRUNC(MIN(close_date))
- FROM rms_.act) + LEVEL - 1
- AS snapshot_date
- FROM DUAL
- CONNECT BY LEVEL <= TRUNC(SYSDATE) - (SELECT TRUNC(MIN(close_date))
- FROM rms_.act))
- WHERE snapshot_date < TRUNC(SYSDATE));
- INSERT INTO rms_.dwh$delta_snapshot
- VALUES (TRUNC(SYSDATE));
- INSERT INTO rms_.dwh$delta_snapshot_data
- (SELECT *
- FROM (WITH acts
- AS (SELECT TRUNC(a.close_date) AS close_date
- ,a.id AS act_id
- ,a.source_id
- ,a.destination_id
- ,a.transfer_type_id
- ,ae.resource_type_id
- ,NVL(ae.heap_amount, 0) * NVL(rm.factor, 1) AS heap_amount
- ,NVL(aed.amount, 0) * NVL(rm.factor, 1) AS batch_amount
- ,(CASE WHEN aer.act_id IS NOT NULL THEN 1 ELSE 0 END) AS enum_amount
- ,NVL(aer.used, 0) AS used
- ,NVL(aer.prev_used, 0) AS prev_used
- ,NVL(aer.STATUS, 'READY') AS STATUS
- ,NVL(aer.prev_status, 'READY') AS prev_status
- ,NVL(aer.bookkeeping_status, 'NEW') AS bookkeeping_status
- ,NVL(aer.prev_bookkeeping_status, 'NEW') AS prev_bookkeeping_status
- ,aer.required_transfer_type_id AS required_transfer_type_id
- ,aer.prev_required_transfer_type_id AS prev_required_transfer_type_id
- ,aer.warranty_valid AS warranty_valid
- ,aer.prev_warranty_valid AS prev_warranty_valid
- ,NVL(aed.consignment_id, aer.consignment_id) AS consignment_id
- ,NVL(aed.consignment_id, prev_consignment_id) AS prev_consignment_id
- ,resource_rp_id
- ,prev_resource_rp_id
- FROM rms_.act a
- JOIN rms_.act_entry ae ON ae.act_id = a.id
- JOIN argus_sys.resource_measure rm ON ae.measure_id = rm.id
- LEFT OUTER JOIN rms_.act_entry_details aed
- ON ( aed.act_id = ae.act_id
- AND aed.resource_type_id = ae.resource_type_id)
- LEFT OUTER JOIN
- (SELECT act_id
- ,resource_type_id
- ,LAG( used, 1) OVER (PARTITION BY resource_unit_id ORDER BY close_date, a2.id) AS prev_used
- ,used
- ,LAG( STATUS, 1) OVER (PARTITION BY resource_unit_id ORDER BY close_date, a2.id) AS prev_status
- ,STATUS
- ,LAG( bookkeeping_status, 1) OVER (PARTITION BY resource_unit_id ORDER BY close_date, a2.id) AS prev_bookkeeping_status
- ,bookkeeping_status
- ,LAG( required_transfer_type_id, 1) OVER (PARTITION BY resource_unit_id ORDER BY close_date, a2.id)
- AS prev_required_transfer_type_id
- ,required_transfer_type_id
- ,LAG( warranty_valid, 1) OVER (PARTITION BY resource_unit_id ORDER BY close_date, a2.id) AS prev_warranty_valid
- ,warranty_valid
- ,consignment_id
- ,LAG( consignment_id, 1) OVER (PARTITION BY resource_unit_id ORDER BY close_date, a2.id) AS prev_consignment_id
- ,worker_id AS resource_rp_id
- ,LAG( worker_id, 1) OVER (PARTITION BY resource_unit_id ORDER BY close_date, a2.id) AS prev_resource_rp_id
- FROM rms_.act_entry_resource, rms_.act a2
- WHERE act_id = a2.id) aer
- ON ( aer.act_id = a.id
- AND aer.resource_type_id = ae.resource_type_id)
- WHERE a.close_date IS NOT NULL
- AND a.close_date <= TRUNC(SYSDATE))
- SELECT close_date AS snapshot_date
- ,acc.enterprise_branch_id AS branch_id
- ,delta.account_id
- ,DECODE(acc.scope_id, 9, DECODE(e.parent_id, NULL, 'C', 'D'), 'O') AS account_grade
- ,delta.resource_type_id
- ,delta.used
- ,delta.STATUS
- ,delta.required_transfer_type_id
- ,delta.warranty_valid
- ,delta.amount
- ,delta.consignment_id
- ,delta.resource_rp_id
- ,delta.transfer_type_id
- ,delta.bookkeeping_status
- ,delta.source_id
- ,delta.destination_id
- ,delta.act_id
- FROM (SELECT close_date
- ,account_id
- ,resource_type_id
- ,used
- ,STATUS
- ,bookkeeping_status
- ,required_transfer_type_id
- ,warranty_valid
- ,consignment_id
- ,resource_rp_id
- ,transfer_type_id
- ,source_id
- ,destination_id
- ,act_id
- ,SUM(amount) AS amount
- FROM (SELECT close_date
- ,source_id AS account_id
- ,resource_type_id
- ,prev_used AS used
- ,prev_status AS STATUS
- ,prev_bookkeeping_status AS bookkeeping_status
- ,prev_required_transfer_type_id AS required_transfer_type_id
- ,prev_warranty_valid AS warranty_valid
- ,prev_consignment_id AS consignment_id
- ,prev_resource_rp_id AS resource_rp_id
- ,transfer_type_id
- ,source_id
- ,destination_id
- ,act_id
- ,-1 * (heap_amount + batch_amount + enum_amount) AS amount
- FROM acts
- UNION ALL
- SELECT close_date
- ,destination_id AS account_id
- ,resource_type_id
- ,used
- ,STATUS
- ,bookkeeping_status
- ,required_transfer_type_id
- ,warranty_valid
- ,consignment_id
- ,resource_rp_id
- ,transfer_type_id
- ,source_id
- ,destination_id
- ,act_id
- ,+1 * (heap_amount + batch_amount + enum_amount) AS amount
- FROM acts)
- GROUP BY close_date, account_id, source_id, destination_id, act_id, resource_type_id, consignment_id, resource_rp_id, transfer_type_id
- ,used, STATUS, bookkeeping_status, required_transfer_type_id, warranty_valid) delta
- ,rms_.account acc
- ,argus_sys.enterprise_branch e
- WHERE acc.scope_id IN (2, 3, 4, 5, 9)
- AND delta.account_id = acc.id
- AND acc.enterprise_branch_id = e.id));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement