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


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.