2016-10-09 7 views
5

मैं एक CASE कथन से कई कॉलम (बीमाकृत कोड, इस मामले में बीमाकृत नाम) प्राप्त करने का प्रयास कर रहा हूं।एकल SQL केस कथन में एकाधिक कॉलम कैसे प्राप्त करें?

निम्नलिखित क्वेरी का प्रयास किया गया है, लेकिन यह एक कॉलम के रूप में बीमाकृत कोड और बीमाकृत दोनों को जोड़ता है।

ऐसे CASE कथन से बिल्कुल दो कॉलम वापस करने के लिए सही वाक्यविन्यास क्या है?

select 
    case 
     when a.policyno[2] in ('E', 'W') then c.insuredcode || c.insuredname 
     else b.insuredcode || b.insuredname 
    end 
from prpcmain a 
left join prpcinsured_1 b on b.proposalno=a.proposalno 
left join prpcinsured_2 c on c.proposalno=a.proposalno 
where a.policyno in (select policyno from policyno_t); 

उत्तर

5

एक CASE बयान केवल एकल स्तंभ नहीं एकाधिक स्तंभों

लौट सकते हैं आप इस

select 
    case 
     when a.policyno[2] in ('E', 'W') then c.insuredcode 
     else b.insuredcode 
    end as insuredcode , 
    case 
     when a.policyno[2] in ('E', 'W') then c.insuredname 
     else b.insuredname 
    end as insuredname 
from prpcmain a 
left join prpcinsured_1 b on b.proposalno=a.proposalno 
left join prpcinsured_2 c on c.proposalno=a.proposalno 
where a.policyno in (select policyno from policyno_t); 
1

मुझे लगता है कि थोड़ा तेज हो सकता है कुछ और सुझाव दे सकते हैं करने के लिए दो अलग-अलग CASE बयान की जरूरत है:

SELECT s.insuredcode,s.insuredname FROM (
    SELECT a.policyno,b.insuredcode,b.insuredname 
    FROM prpcmain a 
    left join prpcinsured_1 b on b.proposalno=a.proposalno 
    WHERE a.policyno[2] not in ('E', 'W') 
    UNION ALL 
    SELECT a.policyno,c.insuredcode,c.insuredname 
    FROM prpcmain a 
    left join prpcinsured_2 c on c.proposalno=a.proposalno 
    WHERE a.policyno[2] in ('E', 'W') 
) s 
where s.policyno in (select policyno from policyno_t); 

जैसा आपके प्रश्न पर, @Prdp दिखाता है कि आपको क्या करना है।

-1

यह है बस अगर किसी भी भाषा में/किसी और शर्त है, तो आप अपनी हालत में बयान और अगर यह सच है, एसक्यूएल फिर बयान निष्पादित करता है जब परिभाषित कर सकते हैं, अन्यथा, वरना हिस्सा कार्यान्वित के रूप में की तरह नीचे वर्णित:

 Select 
       CASE 
        WHEN (cs.ResultSubmitToHOD = 1) THEN 'HOD' 
        WHEN (cs.ResultSubmitToExamDep = 1) THEN 'Exam' 
        ELSE 'Teacher' 
       END AS ResultSubmitStatus 
    From dbo.CourseSection as cs 
+0

यह सवाल है, जो केवल दो कॉलम उपज के लिए पूछ नहीं है उत्तर नहीं मिलता है, लेकिन यह भी एक निर्धारित एसक्यूएल बोली है: इन्फोर्मिक्स। –

+0

मुझे लगता है कि @ लुकमैन-चीमा ने सिर्फ सवाल को गलत समझा, जैसा कि मैंने भी किया था। मैं यहाँ इस उत्तर की तलाश में आया, वास्तव में :) तो, मूल प्रश्न ऊपर परिणाम में दो कॉलम चाहता है, और यह उत्तर QUERY में केस के भीतर दो कॉलम का उपयोग करने के बारे में बात कर रहा है ... –

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