有选择地填充结果列

时间:2014-04-14 06:40:38

标签: sql oracle join

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

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

获取的结果如下:

enter image description here

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

enter image description here

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

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

2 个答案:

答案 0 :(得分:3)

您可以使用Coalesce运算符。

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

答案 1 :(得分:0)

我认为,你应该在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"