본문 바로가기
MySql

MySQL SQL WHERE 절의 CASE 문

by 베이스 공부 2021. 1. 29.
반응형

WHERE 절에서 CASE 조건을 사용하고 있으며 현재 다음 쿼리를 사용하고있는 테이블에서 데이터를 가져 오려고합니다.

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

그러나 total 에 대해 0 을 반환하고 purchase 에 대해 NULL 을 반환합니다.

 

해결 방법

 


Case Statement를 사용하고 싶습니다. where 절의 case 서술에 대해 설명해 주시겠습니까?

다음과 같이 WHERE 에서 CASE 문을 사용할 수 있습니다.

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


 

참조 페이지 https://stackoverflow.com/questions/12400574

 

 

반응형

댓글