update param_data f, ( SELECT c.*, CASE WHEN WeightedFailure IS NOT NULL AND WeightedFailure > 0 THEN 1 / WeightedFailure ELSE 0 END AS basic_mtbf_regulate_tmp, CASE WHEN WeightedFailure IS NOT NULL AND WeightedFailure > 0 THEN WeightedMTTR / WeightedFailure ELSE 0 END AS repair_mttcr FROM ( SELECT c.id, c.name, sum( CASE WHEN b.product_type < 5 THEN 1 * 1 / basic_mtbf_regulate_tmp WHEN a.reliab_distrib_type = 1 THEN a.basic_unit_num * a.basic_mtbf_operating_ratio / a.basic_mtbf_regulate_tmp WHEN a.reliab_distrib_type = 3 THEN a.basic_unit_num * a.basic_mtbf_operating_ratio / a.basic_mtbf_regul_succ_rate ELSE 0 END ) AS WeightedFailure, sum( CASE WHEN b.product_type < 5 THEN 1 * 1 * a.repair_mttcr / a.basic_mtbf_regulate_tmp WHEN a.repairable = 1 and a.reliab_distrib_type = 1 THEN a.basic_unit_num * a.basic_mtbf_operating_ratio * a.repair_mttcr / a.basic_mtbf_regulate_tmp WHEN a.repairable = 1 and a.reliab_distrib_type = 3 THEN a.basic_unit_num * a.basic_mtbf_operating_ratio * a.repair_mttcr / a.basic_mtbf_regul_succ_rate ELSE 0 END ) AS WeightedMttr FROM param_data a, product_model b, product_model c WHERE 1 = 1 and c.ship_id = ${shipId} and c.product_type = ${productType} and c.is_delete = 0 and b.ship_id = ${shipId} and b.pid = c.id and b.is_delete = 0 and a.IS_DELETE = 0 and a.product_id = b.id AND ((b.product_type = 5 AND a.basic_join_compute = 1 and (( a.reliab_distrib_type = 1 AND a.basic_mtbf_regulate_tmp > 0 ) OR (a.reliab_distrib_type = 3 AND a.basic_mtbf_regul_succ_rate > 0)) ) || (b.product_type < 5 AND a.basic_mtbf_regulate_tmp > 0)) GROUP BY c.id, c.name ) c ) d set f.basic_mtbf_regulate_tmp = d.basic_mtbf_regulate_tmp, f.repair_mttcr = d.repair_mttcr where f.product_id = d.id; UPDATE param_data a, product_model b SET repair_mttcr = 0 where b.ship_id = ${shipId} and repair_mttcr is null; UPDATE param_data a, product_model b SET basic_mtbf_regulate_tmp = basic_mtbf_regulate where b.ship_id = ${shipId}; UPDATE param_data a, product_model b SET basic_mtbf_regulate_tmp = basic_runs_num / basic_mtbf_regul_succ_rate where b.ship_id = ${shipId} and reliab_distrib_type = 3 UPDATE param_data a, product_model b SET basic_mtbf_regulate = basic_mtbf_regulate_tmp where b.ship_id = ${shipId} and (reliab_distrib_type = 1 or reliab_distrib_type is null) and a.product_id = b.id and a.IS_DELETE = 0 and b.IS_DELETE = 0; UPDATE param_data a, product_model b SET ai = basic_mtbf_regulate_tmp / (basic_mtbf_regulate_tmp + repair_mttcr) where b.ship_id = ${shipId} and a.product_id = b.id and a.IS_DELETE = 0 and b.IS_DELETE = 0; UPDATE param_data a,( select pid, case when count(1) > 0 then 1 else 0 end as basic_join_compute from param_data a, product_model b where b.ship_id = ${shipId} and a.product_id = b.id and a.basic_join_compute = 1 group by b.pid ) b set a.basic_join_compute = b.basic_join_compute where a.product_id = b.pid;