2012-12-12 14 views
6

मुझे किसी दृश्य के लिए केस स्टेटमेंट लिखने में सहायता चाहिए। बेस टेबल में 2 कॉलम हैं जिन्हें मैं संदर्भित करूँगा: 'चरण' और 'YesNo'।सशर्त केस स्टेटमेंट सिंटैक्स

यदि चरण कॉलम 1 है, और YesNo कॉलम 1 है, तो मुझे इसे 'संख्या' के रूप में देखने के लिए CASE कथन की आवश्यकता है। यदि स्टेज कॉलम 1 है, और YesNo कॉलम 0 है, तो मुझे इसे 'हां' के रूप में देखने के लिए CASE कथन की आवश्यकता है। यदि स्टेज कॉलम 1 है, और YesNo कॉलम न्यूल है, तो मुझे इसे दृश्य में दिखाने के लिए CASE कथन की आवश्यकता है। यदि चरण 1 से कम कुछ भी है, तो मुझे दृश्य में दिखाने के लिए YesNo कॉलम की आवश्यकता है।

यह मेरा तर्क है जहां तक ​​मुझे लगता है कि सही है, लेकिन जब मैं इसे चलाने की कोशिश करता हूं, तो मुझे 'AS' शब्द के बारे में वाक्यविन्यास त्रुटि मिलती है। कोई सुझाव?

CASE 
    WHEN a.Stage = 1 and a.YesorNo = 1 THEN 'No' 
    ELSE WHEN a.Stage = 1 and a.YesorNo = 0 THEN 'Yes' 
END AS NewViewColumn 
+4

मैं सिर्फ कर सकते हैं कहें कि 'YesOrNo' नामक कॉलम होने पर 1 का अर्थ है 'नहीं' मुझे थोड़ा अंदर रोता है। –

+3

मैं दृढ़ता से सुझाव देता हूं कि आप मैट की टिप्पणी पर ध्यान दें और अपनी नामकरण/डेटा योजना को ठीक करें। सबसे पहले, प्रोग्रामिंग में यह (लगभग?) सार्वभौमिक रूप से सच है कि 1 का मतलब है सत्य और 0 का मतलब गलत है। इसे उलटना बेहद अजीब है और आपके कोड को पढ़ने और समझने में काफी कठिन बनाता है। दूसरा, यद्यपि आपने अपना टेबल नाम 'YesOrNo' का उल्लेख नहीं किया है, यह बहुत अच्छा कॉलम नाम नहीं है क्योंकि यह एक प्रश्न का उत्तर है, न कि एक विशेषता। एक बेहतर नाम 'IsDeleted' या' NeedsExpressHandling' या 'HasPermission' या कुछ ऐसा है जो स्पष्ट रूप से सही/गलत है। – Pondlife

उत्तर

6

ELSE WHEN निकालें, यदि आप ELSE बाहर छोड़ तो यह शेष तर्क को पूरा नहीं कर किसी भी आइटम के लिए null वापस आ जाएगी:

CASE 
    WHEN a.Stage = 1 and a.YesorNo = 1 THEN 'No' 
    WHEN a.Stage = 1 and a.YesorNo = 0 THEN 'Yes' 
END AS NewViewColumn 

या उपयोग:

CASE 
    WHEN a.Stage = 1 and a.YesorNo = 1 THEN 'No' 
    WHEN a.Stage = 1 and a.YesorNo = 0 THEN 'Yes' 
    ELSE 'other' 
END AS NewViewColumn 
+0

आपको बहुत बहुत धन्यवाद, यह मेरी समस्या को जल्दी हल कर दिया। – dp3

1

आप ELSE WHEN उपयोग कर रहे हैं, यह या तो ELSE या WHEN .. THEN .. होना चाहिए:

CASE 
    WHEN a.Stage = 1 and a.YesorNo = 1 THEN 'No' 
    ELSE 'Yes' 
END AS NewViewColumn 

या:

CASE 
    WHEN a.Stage = 1 and a.YesorNo = 1 THEN 'No' 
    WHEN a.Stage = 1 and a.YesorNo = 0 THEN 'Yes' 
END AS NewViewColumn 

चेक बाहर अधिक जानकारी के लिए msdn page on CASE

2
CASE 
    WHEN a.Stage = 1 and a.YesorNo = 1 THEN 'No' 
    WHEN a.Stage = 1 and a.YesorNo = 0 THEN 'Yes' 
    ELSE something else -- If you ignored this it will be NULL 
END AS NewViewColumn 
संबंधित मुद्दे