2010-10-14 13 views
14

मैं एक एसक्यूएल क्वेरी के चयन खंड में एक नेस्टेड अगर कथन कैसे शामिल करूं? मुझे स्थिति का उपयोग करने के बारे में पता है जब एक्स और वाई अंत होता है लेकिन रिकॉर्ड रिकॉर्ड में प्रत्येक रिकॉर्ड के लिए आप एक ही फैशन में घोंसला कैसे करते हैं।tsql: क्या चयन में नेस्टेड केस स्टेटमेंट करना संभव है?

SELECT top 10 
     id, 
     case when x.boy <> NULL then 
      x.boy 
     else case when x.girl <> NULL 
      x.girl 
       else case when x.dog <> NULL 
      x.dog 
       else x.cat 

     end as Who 
from house x 

यह सही है:

if x.boy is not null then 
    x.boy 
else if x.girl is not null 
    then x.girl 
else if x.dog is not null 
    then x.dog 
else 
    x.cat 

यहाँ मेरी प्रयास है?

उत्तर

16

आप COALESCE के साथ इस आसान बनाने में कर सकता है।

SELECT TOP 10 id, COALESCE(x.boy, x.girl, x.dog, x.cat) as Who 
    FROM house x 
16

हां। किसी मामले के मामले में कुछ भी गलत नहीं है।

हालांकि, अपनी स्क्रिप्ट, corectly लिखा है:

SELECT top 10 
    id, 
    case 
     when x.boy IS NOT NULL then x.boy 
     else case 
      when x.girl IS NOT NULL THEN x.girl 
      else case 
       when x.dog IS NOT NULL THEN x.dog 
       else x.cat 
      end 
     end 
    end as Who 
from house x 

या

SELECT top 10 
    id, 
    case 
     when x.boy IS NOT NULL then x.boy 
     when x.girl IS NOT NULL THEN x.girl 
     when x.dog IS NOT NULL THEN x.dog 
     else x.cat 
    end as Who 
from house x 

या

SELECT top 10 
    id, 
    coalesce(x.boy, x.girl, x.dog, x.cat) AS Who 
from house x 
+0

मुझे अंत में 'as' के साथ एक त्रुटि मिलती है .. कोई विचार क्यों? – phill

+0

त्रुटि 'as' कीवर्ड के पास गलत वाक्यविन्यास है। – phill

+0

मेरे उत्तर में आपके बयान को सही लिखने के कुछ अलग-अलग तरीके हैं जो सही हैं। उनको देखें और अपनी टिप्पणियां जोड़ें –

0

इस आजमाएं:

SELECT top 10 
     id, 
     case when x.boy Is Not NULL then x.boy 
     else 
       case when x.girl Is Not NULL then x.girl 
       else 
        case when x.dog Is Not Null Then x.dog 
        else x.cat End 
       End 

     end as Who 
from house x 

जो सुझाव के रूप में हालांकि आप सिर्फ coalesce इस्तेमाल कर सकते हैं।

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