2013-01-09 2 views
5

두 개의 다른 열에서 값을 가져 오는 case 문을 만드는 데 관심이 있습니다.이 중 하나는 계산이 포함되어 있습니다.이 작업을 수행하는 방법을 잘 모르겠지만 내가 지금까지 가지고있는 것. (예 : 특별 주문 항목, 단종 품목 및 일반적으로 재고가있는 품목 유형에 대한 항목 유형을 보여주는 하나의 열이 있고 두 번째 열에는 판매 주문의 수량 - 재고 수량이 표시됩니다.) 내 검색어Mysql CASE 문 다중 열

답변

8

이 유형의 요청의 경우 계산을 다시 사용하거나 하위 쿼리를 사용해야합니다.

SELECT ItemID, 
    ItemType, 
    Instock, 
    CASE 
     WHEN ItemType = 'SP/OR' THEN 'Special Order' 
     WHEN Instock < '1' THEN 'Out of Stock' 
     WHEN Instock > '0' THEN 'In Stock' 
    END AS "Stock" 
FROM 
(
    select ItemID, ItemType, (QuantityOnHand - QuantityonSalesOrders) AS Instock 
    from peachtree 
) p; 

또는 :

SELECT ItemID, 
    ItemType, 
    (QuantityOnHand - QuantityonSalesOrders) as Instock, 
    CASE 
     WHEN ItemType = 'SP/OR' THEN 'Special Order' 
     WHEN (QuantityOnHand - QuantityonSalesOrders) < '1' THEN 'Out of Stock' 
     WHEN (QuantityOnHand - QuantityonSalesOrders) > '0' THEN 'In Stock' 
    END AS "Stock" 
FROM peachtree 
+0

경우 기반 열이 WHERE 절에 사용하는 경우 당신은 Instock 값을주는 별명이 선택 목록에서 사용할 수 없습니다 때문입니다 ? 행 (인덱스)을 많이 사용하여 실적을 향상시킬 수있는 방법은 없습니까? – watery

+0

@watery 예, 색인을 사용하면 성능이 향상 될 수 있습니다. 시스템에서 테스트해야합니다. – Taryn