WIS_WD_OP_DEP_OP_YIELD_V
Details
-
Schema: FUSION
-
Object owner: WIS
-
Object type: VIEW
Columns
| Name |
|---|
|
WD_OPERATION_ID OPERATION_SEQ_NUMBER WORK_DEFINITION_ID WORK_DEFINITION_VERSION_ID VERSION_NUMBER OP_YIELD_FACTOR CUMULATIVE_YIELD REV_CUMULATIVE_YIELD CUMULATIVE_TRANSFER_PCT INPUT_SCALE_FACTOR OUTPUT_SCALE_FACTOR |
Query
| SQL_Statement |
|---|
|
WITH wm AS ( SELECT /*+ materialize */ work_method_id FROM wis_work_methods_b WHERE work_method_code = 'PROCESS_MANUFACTURING' ), wd_op_dep AS ( SELECT wdo.work_definition_id AS wd_id, wdo.operation_seq_number, wdv.version_number, wdv.work_definition_version_id wd_ver_id, opdep.previous_wd_operation_id AS prev_op, opdep.next_wd_operation_id AS curr_op, nvl(opdep.transfer_percent, 100) AS transfer_pct, /* set default to 100 */ CASE WHEN wdo.referenced_flag = 'Y' THEN nvl(stdo.op_yield_factor, 1.0) ELSE nvl(wdo.op_yield_factor, 1.0) END op_yield /* set default to 1 */ FROM wis_wd_operations_b wdo, wis_standard_operations_b stdo, wis_wd_versions wdv, wm, wis_work_definitions wd, wis_wd_op_dependencies opdep WHERE wdv.work_definition_id = wdo.work_definition_id AND wdo.standard_operation_id = stdo.standard_operation_id (+) AND wdv.work_definition_id = wd.work_definition_id AND wd.enable_parallel_ops_flag = 'Y' /* Only for enforce dep WDs. */ AND wd.work_method_id = wm.work_method_id /* Only for Process Work Methods */ AND wdo.work_definition_id = opdep.work_definition_id AND wdv.work_definition_version_id = opdep.work_definition_version_id AND wdo.wd_operation_id = nvl(opdep.next_wd_operation_id, opdep.previous_wd_operation_id) AND opdep.dependency_type = 'ORA_FINISH_TO_START' /* Include only Finish to Start deps */ ), wd_op_dep_a AS ( SELECT /*+ materialize */ * FROM wd_op_dep WHERE curr_op IS NOT NULL ), branches_rec ( wd_id, wd_ver_id, version_number, prev_op, curr_op, operation_seq_number, transfer_pct, op_yield, net_yld, net_transfer_pct ) AS ( SELECT wd_id, wd_ver_id, version_number, prev_op, curr_op, operation_seq_number, transfer_pct, op_yield, ln(transfer_pct / 100) + ln(op_yield) AS net_yld, ln(transfer_pct / 100) AS net_transfer_pct FROM wd_op_dep_a WHERE prev_op IS NULL /* starting point */ UNION ALL SELECT /* leading(dep b) */ dep.wd_id, dep.wd_ver_id, dep.version_number, dep.prev_op, dep.curr_op, dep.operation_seq_number, dep.transfer_pct, dep.op_yield, b.net_yld + ln(dep.transfer_pct / 100) + ln(dep.op_yield) AS net_yld, b.net_transfer_pct + ln(dep.transfer_pct / 100) AS net_transfer_pct FROM wd_op_dep_a dep, branches_rec b WHERE b.wd_id = dep.wd_id AND b.wd_ver_id = dep.wd_ver_id AND b.curr_op = dep.prev_op ) CYCLE wd_id, wd_ver_id, curr_op SET is_cycle TO 1 DEFAULT 0, fwd_yields AS ( SELECT wd_id, wd_ver_id, version_number, curr_op, operation_seq_number, op_yield, SUM(exp(net_yld)) AS fwd_yld, SUM(exp(net_transfer_pct)) AS fwd_transfer_pct FROM branches_rec GROUP BY wd_id, wd_ver_id, version_number, curr_op, operation_seq_number, op_yield ), final_yield AS ( SELECT fy.wd_id, fy.wd_ver_id, fy.curr_op, fy.fwd_yld AS net_yield FROM fwd_yields fy, ( SELECT wd_id, wd_ver_id, prev_op FROM wd_op_dep WHERE curr_op IS NULL ) depops WHERE depops.wd_id = fy.wd_id AND depops.wd_ver_id = fy.wd_ver_id AND depops.prev_op = fy.curr_op ) SELECT fw.curr_op wd_operation_id, fw.operation_seq_number operation_seq_number, fw.wd_id work_definition_id, fw.wd_ver_id work_definition_version_id, fw.version_number version_number, fw.op_yield op_yield_factor, round(fw.fwd_yld, 30) cumulative_yield, round((fy.net_yield / nvl(fw.fwd_yld, 1.0)) * fw.op_yield, 30) rev_cumulative_yield, round(fw.fwd_transfer_pct * 100, 30) cumulative_transfer_pct, round((fw.fwd_yld / nvl((fw.op_yield * fw.fwd_transfer_pct), 1.0)), 30) input_scale_factor, round((fw.fwd_yld / nvl(fw.fwd_transfer_pct, 1.0)), 30) output_scale_factor FROM fwd_yields fw, final_yield fy WHERE fw.wd_id = fy.wd_id AND fw.wd_ver_id = fy.wd_ver_id ORDER BY fw.wd_id, fw.wd_ver_id, fw.curr_op |