带连接的多个CASE

时间:2018-12-14 17:40:41

标签: sql oracle concatenation case

在连接表中的2列时,我需要使用多个CASE语句。

这是场景,我们如何实现这一目标。

在我的选择中,我们将表A中的col1 + col3串联起来。

  

在表A中,
  当col2值为NULL并且
时    如果COL3值为0000
    然后从表B的COL1中选择值
    如果COL3值不等于0000,则为ELSE
     从表B的COL2中选择值

表A:

col1 col2 col3
aa   null 0000
bb   null 1234

表b:

col1 col2  col3
LMNO PQRST

我尝试了类似的操作,

select
 (a.col1 || '+' || a.col3) 
 CASE WHEN (a.col2 IS NULL) THEN
    CASE WHEN (a.col3 = '0000') THEN
     (Select col1 from b)
     ELSE (a.col3 <> '0000')
     (Select col2 from b)
 ELSE
  a.col2 
 as TEST

2 个答案:

答案 0 :(得分:1)

假定加入条件基于a.column_will_have_same_value = b.column_will_have_same_value

select (a.col1 || '+' || a.col3) 
,  CASE WHEN a.col2 IS NULL AND a.col3 = '0000' THEN b.col1
        WHEN a.col2 IS NULL AND a.col3 <> '0000' THEN b.col2
        WHEN a.col2 IS NOT NULL A THEN a.col2
    END  as TEST
 FROM tableA a 
 inner join tableB b on a.column_will_have_same_value  = b.column_will_have_same_value

答案 1 :(得分:0)

这是您所期望的吗?

proc sql;
select 
case
    when a.col2 is null and a.col3='0000' then a.col1||b.col1
    when a.col3<>'0000' then a.col1||b.col2
end as value

from tablea a, tableb b;
quit;