2009-09-02 17 views
13

मैं एक चर @status कहा जाता है जो मैं इस चयन बयान से पहले सेट है:,मैं शर्त के आधार पर कॉलम का चयन कैसे करूं?

Select 
ordr_num as num, 
ordr_date as date, 
ordr_ship_with as shipwith 
From 
order 
where ordr_num = @ordrNum 

मैं केवल यदि @status <> 'Cancelled'ordr_ship_with स्तंभ का चयन करना चाहते हैं अन्यथा मैं shipwith के लिए अशक्त चयन करना चाहते हैं। मैं इसे कैसे पूर्ण करूं?

+0

स्थिति कॉलम में पूरे शब्द 'रद्द' को स्टोर करना सबसे अच्छा नहीं है। स्थिति एक "(") मानों के साथ "सी" = रद्द हो सकती है, "ओ" = खुला, "डी" = हटाया गया, "पी" = संसाधित, आदि –

+0

मैं सहमत हूं। या 'TinyInt' फ़ील्ड का उपयोग करें ताकि आपके पास कोड में enum का उपयोग करके कई और स्थितियां और मानचित्र हो सकें। – strider

उत्तर

26
SELECT ordr_num as num, ordr_date as date, 
    CASE WHEN @status<>'Cancelled' THEN ordr_ship_with ELSE NULL END as shipwith 
FROM order 
WHERE ordr_num = @ordrNum 
+0

सबसे पहले इस जवाब के लिए धन्यवाद, मुझे बहुत मदद मिली। WHSEE स्थिति पर कब केस द्वारा लौटाए गए कॉलम का उपयोग कैसे कर सकते हैं? मैंने एएस टी का उपयोग करने की कोशिश की और जहां भी अनुभाग के भीतर टी तक पहुंचने का प्रयास किया लेकिन सफलता के बिना। धन्यवाद। – Jacob

+1

आपको इसे फिर से टाइप करना होगा, या इस क्वेरी को घोंसला करना होगा और स्थिति को बाहरी अनुभाग में रखना होगा। एसक्यूएल कभी-कभी उस तरह गूंगा है। –

3

इस आजमाएँ

Select 
    ordr_num as num, 
    ordr_date as date, 
    CASE 
     WHEN @Status <> 'Cancelled' THEN ordr_ship_with 
     ELSE NULL END 
    as shipwith 
From order 
where ordr_num = @ordrNum 

हालांकि मुझे लगता है कि आप स्थिति आदेश तालिका में एक वास्तविक स्तंभ है। उस मामले में, ऐसा करते हैं:

Select 
    ordr_num as num, 
    ordr_date as date, 
    CASE 
     WHEN Status <> 'Cancelled' THEN ordr_ship_with 
     ELSE NULL END 
    as shipwith 
From order 
where ordr_num = @ordrNum 
0

चयन मामला
जब @status <> 'रद्द' तब ordr_ship_with
वरना अशक्त
अंत shipwith के रूप में, ... अन्य क्षेत्रों

प्रकरण
1
Select 
    ordr_num as num, 
    ordr_date as date, 
    CASE WHEN @status <> 'Cancelled' THEN ordr_ship_with ELSE NULL END as shipwith 
From 
    order where ordr_num = @ordrNum 
संबंधित मुद्दे

 संबंधित मुद्दे