mysql - 带条件的 CASE 语句 MYSQL

标签 mysql sql

我得到了2个CASE语句:第一个CASE语句如下:

Case When ((cust_shipmentdate_awb Is Null OR cust_shipmentdate_awb = '') 
AND (comp_shipdate_awb IS NULL OR comp_shipdate_awb = '')) Then 'Pending'
ELSE 'Shipped' End AS shipment_status

第二个CASE语句如下:

Case When apbg_bal_pay_amt ='0' Then 'Received'
    Else 'Pending' End AS payment_status

我希望再编写一个名为 OVERALL_Status 的 CASE 语句。这基本上是这两种情况(shipment_status 和 payment_status)的组合,这意味着如果 Shipment 状态为“Shipped”且 Payment_Status 为“Received”,则Overall_status 为“Completed”,否则为“Not Completed”。谁能帮我解决这个问题吗?这里我真的很震撼。我尝试了两种情况的组合,但不起作用:

Case When (cust_shipmentdate_awb Is Null OR cust_shipmentdate_awb = '') AND 
(comp_shipdate_awb IS NULL OR comp_shipdate_awb = '') AND (apbg_bal_pay_amt != '0') Then 
'Pending' ELSE 'Completed' End AS overall_status 

最佳答案

我认为有两种解决方案: 1. 将当前查询设为子查询,并在子查询的结果上添加另一个 CASE 语句。 (我认为这是一个漂亮的解决方案) 2. 您向现有案例添加另一个 WHEN。组合前两个 WHEN 子句中的子句即可得到结果。 (可能是最优化的解决方案)

关于mysql - 带条件的 CASE 语句 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41777187/

相关文章:

php - 如何限制从数据库回显的字符?

mysql - 如何将.mysql文件导入MySQL数据库?

mysql - 如何将www目录设置为公开?瓦姆普

android - 足以生成 GeoJSON 的最少数据量?

mysql - 如何避免连接表出现重复行。 (如何使用它)?

sql - 无法在 SQL 中划分为两个单独列表的计数,一直返回 1

sql - 查询的奇怪行为

mysql - 选择具有 MAX(datetime) 的行并获取列的最小值及其日期?

mysql - SQL 连接子句返回多次出现的行而不分组

sql - 甲骨文 SQL : SQL join with group by (count) and having clauses