कई शर्तों के साथ मामला


15

मुझे कई शर्तों के आधार पर, चयनित स्टेटमेंट से लौटे मूल्य को बदलने की आवश्यकता है। मैंने कुछ इस तरह की कोशिश की:

,CASE i.DocValue
  WHEN 'F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal
  ELSE 0
END as Value

यह काम क्यों नहीं कर रहा है और इसे करने के लिए अनुशंसित तरीका क्या है? अगले कई WHEN की शर्तें होंगी।

धन्यवाद

जवाबों:


27
,CASE WHEN i.DocValue ='F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal
  ELSE 0
END as Value

दो प्रकार के CASEस्टेटमेंट हैं, SIMPLE और SEARCHED ।

आप एक साधारण मामले की अभिव्यक्ति में कई अभिव्यक्तियों का मूल्यांकन नहीं कर सकते, जो कि आप करने का प्रयास कर रहे थे।

-- Simple CASE expression: 
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
-- Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

सरल मामले का उदाहरण:

CASE x
  WHEN 'a' THEN 'b'
  WHEN 'c' THEN 'd'
  ELSE 'z'
END

खोजे गए मामले का उदाहरण:

CASE 
  WHEN x = 1 AND y = 2 THEN 'a'
  WHEN x = 2 AND y = 1 THEN 'b'
  ELSE 'z'
END

इसके अलावा पढ़ना: http://msdn.microsoft.com/en-us/library/ms181765.aspx


1

यदि आपके पास कई आवश्यकताएं हैं, तो आप इसे भी लिख सकते हैं:

CASE WHEN CITY='HYDERABAD' THEN       
 CASE WHEN AREA='BHILL' THEN PIN='12345'      
 WHEN AREA='DSNR' THEN PIN='67890'          
 ELSE '33333'          
 END           
END AS PIN_COD

आप सही हैं, जटिल हालत में काम करने के लिए नेस्टेड मामला भी :)
— मुफ्लिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.