SUM(CASE WHEN (UPPER(t.scan_result) IN ('OK','PASS') OR t.scan_result IN (N'通过')) THEN 1 ELSE 0 END) AS okCount,
SUM(CASE WHEN t.scan_result IS NULL THEN 0 WHEN (UPPER(t.scan_result) IN ('OK','PASS') OR t.scan_result IN (N'通过')) THEN 0 ELSE 1 END) AS ngCount,
CAST(IIF(COUNT(1) = 0, 0, (SUM(CASE WHEN (UPPER(t.scan_result) IN ('OK','PASS') OR t.scan_result IN (N'通过')) THEN 1 ELSE 0 END) * 100.0 / COUNT(1))) AS DECIMAL(10,2)) AS yieldRateNum,
CONCAT(CAST(IIF(COUNT(1) = 0, 0, (SUM(CASE WHEN (UPPER(t.scan_result) IN ('OK','PASS') OR t.scan_result IN (N'通过')) THEN 1 ELSE 0 END) * 100.0 / COUNT(1))) AS DECIMAL(10,2)), '%') AS yieldRate
FROM prod_output_scan_info t
LEFT JOIN prod_base_machine_info bm ON bm.machine_id = t.machine_id
LEFT JOIN prod_base_process_info pi ON pi.process_id = t.process_id
LEFT JOIN base_material_info bmi ON bmi.material_id = t.materiel_id
<where>
<iftest="map.beginDate != null and map.beginDate != '' and map.endDate != null and map.endDate != ''">
AND FORMAT(t.create_time, 'yyyy-MM-dd') BETWEEN #{map.beginDate} AND #{map.endDate}
</if>
<iftest="map.processId != null and map.processId != ''">
AND t.process_id = #{map.processId}
</if>
<iftest="map.machineId != null and map.machineId != ''">
AND t.machine_id = #{map.machineId}
</if>
<iftest="map.materialName != null and map.materialName != ''">
AND bmi.material_name LIKE CONCAT('%', #{map.materialName}, '%')
SELECT CONVERT(DATE, t.create_time) AS productionDate,
COUNT(1) AS totalCount,
SUM(CASE WHEN (UPPER(t.scan_result) IN ('OK','PASS') OR t.scan_result IN (N'通过')) THEN 1 ELSE 0 END) AS okCount,
SUM(CASE WHEN t.scan_result IS NULL THEN 0 WHEN (UPPER(t.scan_result) IN ('OK','PASS') OR t.scan_result IN (N'通过')) THEN 0 ELSE 1 END) AS ngCount,
CAST(IIF(COUNT(1) = 0, 0, (SUM(CASE WHEN (UPPER(t.scan_result) IN ('OK','PASS') OR t.scan_result IN (N'通过')) THEN 1 ELSE 0 END) * 100.0 / COUNT(1))) AS DECIMAL(10,2)) AS yieldRateNum,
CONCAT(CAST(IIF(COUNT(1) = 0, 0, (SUM(CASE WHEN (UPPER(t.scan_result) IN ('OK','PASS') OR t.scan_result IN (N'通过')) THEN 1 ELSE 0 END) * 100.0 / COUNT(1))) AS DECIMAL(10,2)), '%') AS yieldRate
FROM prod_output_scan_info t
LEFT JOIN prod_base_machine_info bm ON bm.machine_id = t.machine_id
LEFT JOIN prod_base_process_info pi ON pi.process_id = t.process_id
LEFT JOIN base_material_info bmi ON bmi.material_id = t.materiel_id
<where>
<iftest="map.beginDate != null and map.beginDate != '' and map.endDate != null and map.endDate != ''">
AND FORMAT(t.create_time, 'yyyy-MM-dd') BETWEEN #{map.beginDate} AND #{map.endDate}
</if>
<iftest="map.processId != null and map.processId != ''">
AND t.process_id = #{map.processId}
</if>
<iftest="map.machineId != null and map.machineId != ''">
AND t.machine_id = #{map.machineId}
</if>
<iftest="map.materialName != null and map.materialName != ''">
AND bmi.material_name LIKE CONCAT('%', #{map.materialName}, '%')