2012-09-13 25 views
5

estoy tratando de obtener los datos de la tabla donde estoy usando una condición CASE en la cláusula WHERE y actualmente estoy usando siguiente consulta: -declaración CASE en la cláusula WHERE de SQL

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 

pero vuelve 0 para total y NULL para purchase.

Respuesta

16

De your comment.

Quiero usar declaración del caso, podría u me PLS aclarar sobre el caso statament en donde cláusula

Usted puede utilizar CASE declaración en WHERE así:

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 

Aquí es necesario para usar ELSE 1=1. de lo contrario, no obtendrás el resultado deseado. Para obtener más explicaciones, vea this SQLFiddle

+1

Gracias hims056, Its working now .. – guri

3

No creo que CASE pueda funcionar de esa manera. Lo que desea es una expresión un poco más compleja que su cláusula WHERE. Probablemente algo como esto:

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' AND delivery_date >= '2012-08-01') 
    OR STATUS = 'In Stock' 
    OR STATUS = 'Ref' 
) 
+0

Gracias Ian Clelland por su respuesta, su consulta está funcionando Pero quiero utilizar Case Statement, podría aclararme sobre el caso del caso en where clause.Gracias de antemano – guri