【问题标题】:Multiple CASE with concatenation具有串联的多个 CASE
【发布时间】:2018-12-14 17:40:40
【问题描述】:

我需要在连接表中的 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

【问题讨论】:

  • 各种场景的样本数据和预期输出会很有用。
  • 最后从A查询需求
  • 现实还有另一列在两个表格中具有相同的值
  • 张贴第三张有关系的表请澄清

标签: sql oracle concatenation case


【解决方案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

【讨论】:

    【解决方案2】:

    这是你所期待的吗?

    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;
    

    【讨论】:

      猜你喜欢
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多