SQL WHERE子句中的CASE语句

gur*_*uri 5 mysql case

我正在尝试从表中获取数据,我正在使用条款中的CASE条件WHERE,目前我正在使用以下查询: -

SELECT count(enq_id) AS total, sum(purchase_amount) AS purchase
FROM temp_stock
WHERE purchase_date <> '0000-00-00'
AND purchase_date < '2012-08-01'
AND (

STATUS = 'Sold'
OR STATUS = 'In Stock'
OR STATUS = 'Ref'
)
AND CASE WHEN (

STATUS = 'Sold'
)
THEN delivery_date >= '2012-08-01'
END
Run Code Online (Sandbox Code Playgroud)

但它返回0totalNULLpurchase.

him*_*056 17

你的评论.

我想使用Case Statement,请你澄清一下where子句中的case statament

您可以像这样使用CASE语句WHERE:

SELECT count(enq_id) AS total, sum(purchase_amount) AS purchase
FROM temp_stock
WHERE purchase_date <> '0000-00-00'
AND purchase_date < '2012-08-01'
AND (    STATUS = 'Sold'
      OR STATUS = 'In Stock'
      OR STATUS = 'Ref')
AND CASE STATUS 
         WHEN 'Sold' 
         THEN delivery_date >= '2012-08-01'
         ELSE 1=1
    END
Run Code Online (Sandbox Code Playgroud)

在这里你需要使用ELSE 1=1.否则你不会得到理想的结果.有关更多说明,请参阅此SQLFiddle