2016-10-09 56 views
5

私は単一のCASEステートメントから複数の列(この場合insuredcode、insuredname)を取得しようとしています。単一のSQL CASE文で複数の列を取得する方法は?

次のクエリが試されましたが、insuredcodeとinsurednameの両方を1つの列として連結しています。

CASE文から正確に2つの列を返す正しい構文は何ですか?

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
私は少し速いかもしれない何かを提案することができます

を行うために、2つの異なる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); 

asあなたの質問には、@Prdpがあなたが何をする必要があるかを示しています。

-1

それはとき声明単に任意の言語でのif/else条件のように、あなたがにあなたの条件を定義することができますし、それが本当であれば、SQLはそうと、そうでない一部を実行し、その後文を実行以下で説明する:

 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

これは、2つの列のみをもたらすために求めていない質問に答えるだけでなく、指定されたSQL方言を持っていません:Informixのを。 –

+0

私は@ luqman-cheemaはちょうど私があまりにもやったように、質問を誤解したと思います。私はここでこの答えを探しに来ました:)実際、上記の元の質問は2つの列を結果として求めていますが、この回答は2つの列をCASE IN THE QUERY内で使用することについて話しています... –

関連する問題