【问题标题】:Selectively populating result column有选择地填充结果列
【发布时间】:2014-04-14 06:40:37
【问题描述】:

我有一个从多个表中获取结果的查询:

Select 
    TA.C1 as ColumnA, TB.C1 as ColumnB, TC.C1 as ColumnC 
from 
    TableA TA, TableB TB, TableC TC
where 
    --Business Conditions

获取的结果如下:

希望在单独的 columnD 中获取结果,该 columnD 具有 ColumnA 的每个对应值的值,例如:

PS:如果不是 null ,则 ColumnB 的值优先于 ColumnC 的值(例如Row 4

有人可以建议实现这一目标的方法吗?

【问题讨论】:

标签: sql oracle join


【解决方案1】:

您可以使用 Coalesce 运算符。

Select TA.C1 as ColumnA, 
       COALESCE(TB.C1, TC.C1) as ColumnB
       from TableA TA, TableB TB, TableC TC

【讨论】:

    【解决方案2】:

    我认为,您应该在 select 子句中尝试 case。

    下面给出的代码应该给出一个粗略的想法,它没有经过测试。

    Select TA.C1 as ColumnA, 
           case 
              when TB.C1 is not NULL THEN TB.C1 
              when TC.C1 is not NULL THEN TC.C1
            end "Column D" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多