优化sql:IF (( `mpst`.`CODE` = 'CC001' ), `a`.`WAFER_COUNT`, IF (( `mpst`.`CODE` = 'CC010' ), `wtoi`.`QUANTITY`, `cbc`.`LAST_BAR_OK_COUNT` )) AS `TOTAL_COUNT`, IF (( `mpst`.`CODE` = 'CC001' ), `a`.`WAFER_OK_COUNT`, IF (( `mpst`.`CODE` = 'CC010' ), `wtoi`.`QUANTITY`, `cbc`.`BAR_OK_COUNT` )) AS `OK_COUNT`, IF (( `mpst`.`CODE` = 'CC001' ), `a`.`WAFER_NG_COUNT`, IF (( `mpst`.`CODE` = 'CC010'), `wtoi`.`QUANTITY`, `cbc`.`BAR_NG_COUNT` )) AS `NG_COUNT`,
时间: 2023-07-29 19:14:23 浏览: 193
根据您提供的 SQL 代码片段,您可以尝试使用 CASE 表达式来简化和优化查询。下面是优化后的 SQL 代码:
```sql
CASE
WHEN `mpst`.`CODE` = 'CC001' THEN `a`.`WAFER_COUNT`
WHEN `mpst`.`CODE` = 'CC010' THEN `wtoi`.`QUANTITY`
ELSE `cbc`.`LAST_BAR_OK_COUNT`
END AS `TOTAL_COUNT`,
CASE
WHEN `mpst`.`CODE` = 'CC001' THEN `a`.`WAFER_OK_COUNT`
WHEN `mpst`.`CODE` = 'CC010' THEN `wtoi`.`QUANTITY`
ELSE `cbc`.`BAR_OK_COUNT`
END AS `OK_COUNT`,
CASE
WHEN `mpst`.`CODE` = 'CC001' THEN `a`.`WAFER_NG_COUNT`
WHEN `mpst`.`CODE` = 'CC010' THEN `wtoi`.`QUANTITY`
ELSE `cbc`.`BAR_NG_COUNT`
END AS `NG_COUNT`
```
使用 CASE 表达式,您可以根据条件返回不同的值。在优化后的代码中,首先检查 `mpst`.`CODE` 的值是否等于 'CC001',如果是,则返回相应的值。如果不是,则继续检查 `mpst`.`CODE` 的值是否等于 'CC010',如果是,则返回相应的值。如果都不满足,则返回相应的值。
通过使用 CASE 表达式,可以使 SQL 代码更简洁和易读,并且可能提高查询的性能。请根据您的实际需求进行测试和验证。
阅读全文