如何在单个SQL CASE语句中获取多个列?

Mic*_*l.Y 8 sql informix case

我试图从单个CASE语句中获取多个列(在这种情况下为insuredcode,insuredname).

已尝试以下查询,但它将insuredcode和insuredname连接为一列.

从这样的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);
Run Code Online (Sandbox Code Playgroud)

Pரத*_*ீப் 13

一个CASE声明只能返回单列没有多列

您需要两个不同的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);
Run Code Online (Sandbox Code Playgroud)

  • 如果查询引擎在两种情况下条件相同,则查询引擎优化某些内容的任何想法 (7认同)

小智 5

它就像任何语言中的 if/else 条件一样,你可以在When语句中定义你的条件,如果条件为 true,SQL 执行Then语句,否则执行Else部分,如下所述:

     Select 
                 CASE 
                    WHEN (cs.ResultSubmitToHOD = 1) THEN 'HOD'
                    WHEN (cs.ResultSubmitToExamDep = 1) THEN 'Exam'
                    ELSE 'Teacher'
                END AS ResultSubmitStatus
     From dbo.CourseSection as cs
Run Code Online (Sandbox Code Playgroud)

  • 我认为@luqman-cheema 只是误解了这个问题,坦白说我也是如此。我来这里实际上是为了寻找这个答案:)所以,上面的原始问题想要在结果中包含两列,而这个答案正在谈论在查询中的案例中使用两列...... (3认同)
  • 正是我正在寻找的,谢谢!(即使有人投票否决了你) (3认同)
  • 这并没有回答这个问题,它不仅要求生成两列,而且还具有指定的 SQL 方言:Informix。 (2认同)