2008-11-13 11 views
14

मैं एक (एमएस) SQL क्वेरी जो कुछ इस तरह देता है बनाने के लिए करना चाहते हैं:एसक्यूएल इनलाइन अगर बयान प्रकार प्रश्न

Col1 Col2     Col3 
---- --------------------- ------ 
AAA 18.92     18.92 
BBB 20.00     40.00 
AAA 30.84     30.84 
BBB 06.00     12.00 
AAA 30.84     30.84 
AAA 46.79     46.79 
AAA 86.40     86.40 

जहां Col3 Col2 के बराबर है जब Col1 = एएए और Col3 दो बार Col2 जब है Col1 = बीबीबी। क्या कोई मुझे कठोर दिशा में इंगित कर सकता है?

+1

मुझे पता है कि यह पुराना सवाल है, लेकिन अब हमारे पास SQL ​​Server 2012 है, कोई 'IIF' http://stackoverflow.com/a/23991354 – jahu

उत्तर

32

आपने उल्लेख नहीं किया कि आप किस प्रकार का डेटाबेस उपयोग कर रहे हैं।

SELECT Col1, Col2, 
    CASE WHEN Col1='AAA' THEN Col2 WHEN Col1='BBB' THEN Col2*2 ELSE NULL END AS Col3 
FROM ... 
+0

ओह का उपयोग कर सकता है: उस बारे में सोचा नहीं था प्रश्न की व्याख्या। मैंने सोचा कि वह एक जटिल कहां से पूछ रहा था। यह देखना दिलचस्प होगा कि वह किसका उपयोग करता है। –

+0

मुझे लगता है कि वह रिकॉर्ड फ़िल्टर करना चाहता है। –

1
select * 
from yourtable 
where (Col3 = col2 AND Col1 = 'AAA') OR 
    (Col3 = (2*Col2) AND Col1='BBB') 
+0

ओह: इस सवाल की व्याख्या के बारे में सोचा नहीं था। मैंने सोचा कि वह एक गणना कॉलम के लिए पूछ रहा था। यह देखने में दिलचस्पी होगी कि वह किसका उपयोग करता है। –

2

यह SQL के अपने स्वाद पर निर्भर करता है: यहाँ कुछ है कि एसक्यूएल सर्वर में काम करता रहेगा। केस/जब SQL सर्वर (और संभवतः अन्य) के साथ काम करता है।

Select Col1, Col2, 
     Case When Col1 = 'AAA' Then Col2 Else Col2 * 2 End As Col3 
From YourTable 
0

कभी कभी मूल्यों null हैं, इसलिए वे इस तरह से संभाला जा सकता:

select Address1 + (case when Address2='' then '' else ', '+Address2 end) +    
    (case when Address3='' then '' else ', '+ Address3 end) as FullAddress from users 
7

तुम भी ISNULL या COALESCE कार्यों की तरह इस प्रकार उपयोग कर सकते हैं, मूल्यों अशक्त होना चाहिए:

SELECT ISNULL(Col1, 'AAA') AS Col1, 
     ISNULL(Col2, 0) AS Col2, 
     CASE WHEN ISNULL(Col1, 'AAA') = 'BBB' THEN ISNULL(Col2, 0) * 2 
      ELSE ISNULL(Col2) 
     END AS Col3 
FROM Tablename 
संबंधित मुद्दे