2013-01-09 33 views
5

मुझे एक केस स्टेटमेंट बनाने में दिलचस्पी है जो दो अलग-अलग स्तंभों से मूल्य खींचती है, जिनमें से एक गणना शामिल है .. मुझे यकीन नहीं है कि यह काम कैसे करें लेकिन मैं आपको दिखाऊंगा मेरे पास अब तक क्या है। (मेरे पास एक कॉलम है जो आइटम प्रकार दिखाता है उदाहरण के लिए विशेष ऑर्डर आइटम, बंद आइटम और आइटम जो आम तौर पर स्टॉक किए जाते हैं। और दूसरा कॉलम हाथ पर मात्रा दिखाता है - बिक्री आदेश पर मात्रा यह निर्धारित करने के लिए कि आइटम स्टॉक में है या नहीं।) यहां है मेरी क्वेरीमाईस्क्ल केस स्टेटमेंट एकाधिक कॉलम

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

उत्तर

8

इस प्रकार के अनुरोध के लिए आपको या तो गणना का पुन: उपयोग करना होगा या सबक्वायरी का उपयोग करना होगा। इसका कारण यह है कि आप उर्फ ​​Instock मूल्य दे रहे हैं का चयन करें सूची के भीतर उपयोग के लिए उपलब्ध नहीं है:

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

क्या होगा यदि मामले के आधार पर स्तंभ एक कहां खंड में प्रयोग किया जाता है ? बहुत सारी पंक्तियों (यानी इंडेक्स) के साथ अपने प्रदर्शन में सुधार करने का कोई तरीका? – watery

+0

@watery हां, इंडेक्स का उपयोग करके प्रदर्शन के साथ मदद मिल सकती है। हालांकि आपको इसे अपने सिस्टम पर परीक्षण करना होगा। – Taryn